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

时间:2014-11-14 21:40:38

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

昨天我研究过socket,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 {/ 1}}。 p>

我认为风帆onConnect等同于socket.io io.on(connection)。然后风帆onDisconnect方法相当于socket.on('disconnect'),在io.on(connection)内,它就像一个快捷方式,以适当的方式处理此特定事件并尊重其标准(方法以{开头) {1}})。

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

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

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

1 个答案:

答案 0 :(得分:3)

我的第一印象实际上是正确的,所以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');
     });
});