javascript - Sails.js - 如何设置 sails 套接字配置?

标签 javascript node.js sockets socket.io sails.js

我昨天研究了 sockets、socket.io 和 sails,我不得不说我很迷茫。我以前从未使用过它们。我以为我明白了,但我不再确定了。

我的工作基于 http://socket.io/get-started/chat/ .我正在使用框架 Sails.js,它添加​​了自己的方法来处理套接字等。

config/sockets.js 中,我们有一个 onConnectonDisconnect 方法。参见 https://github.com/balderdashy/sails-docs/blob/master/reference/sails.config/sails.config.sockets.md和(源代码)https://gist.github.com/Vadorequest/568afc14294f1448ab55

我将比较 sails 和 socket.io,让我们看这段代码:

io.on('connection', function(socket){
  console.log('a user connected');
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

当 socket.io 打开(连接)时,它定义了 listeners,例如 socket.on('disconnect'),它们正在等待来自客户端的发出请求或者服务器使用 socket.emit 方法。

我以为sails onConnect 等同于socket.io io.on(connection)。那么sails的onDisconnect方法就相当于socket.on('disconnect'),在io.on(connection)里面,就是就像一条捷径,以正确的方式处理这个特定事件并遵守其标准(方法以 on 开头)。

但是我已经将我的代码展示给一个已经使用过 socket.io 和 sails 的 friend ,他告诉我我错了,我正在做的是在另一个监听器中定义一个监听器,这会导致困惑困惑(至少)。

我想知道我是否误解了如何设置 sails 套接字。

如果我错了,我会哭,但我会克服的。

最佳答案

我的第一印象其实是对的,所以Sails为我们隐藏了socket.io逻辑,这两个代码是等价的,第一个使用socket.io,第二个第二种使用 Sails config/sockets.js 方式:

// Socket.io way
io.on('connection', function(socket){
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

// Sails way (config/sockets.js), hide the socket.io logic. (Facade design pattern)
module.exports.sockets = {
  onDisconnect: function(session, socket) {
    console.log('user disconnected');
  }
}

同理,Sails的onConnect方法等同于

io.on('connection', function(socket){
    socket.on('connect', function() { 
        console.log('user connected');
     });
});

关于javascript - Sails.js - 如何设置 sails 套接字配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939295/

相关文章:

css - Node 萨斯 |除非我手动删除 css 文件,否则不会重新编译

node.js - underscore.js 与 consolidate.js : how to change templateSettings?

c - unistd write() 在连续 100 次套接字写入/读取后停止写入,程序返回 3328 错误代码

javascript - 使用 javascript 转换 JSON 结构

javascript - 分离客户端和服务器代码的文件夹后的发布/订阅

javascript - Alexa Skills 使用 slotValue 作为数组名称

java - Java 中的代理服务器 : Not able to send a response back to the client

javascript - 使用 JavaScript 平滑地更改 'body' 元素的背景图像

javascript - 重试时更改 ajax 数据

c++ - WSARecv() 和多个缓冲区