【问题标题】:Sails.js - How to setup the sails socket config?Sails.js - 如何设置 Sails 套接字配置?
【发布时间】:2015-01-12 09:26:52
【问题描述】:

我昨天研究了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)。那么sailsonDisconnect方法就等价于socket.on('disconnect'),在io.on(connection)里面,就像一条捷径,sails以正确的方式处理这个特定的事件并尊重它的标准(方法以on开头)。

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

我想知道我是否误解了如何设置风帆插座。

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

【问题讨论】:

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


    【解决方案1】:

    我的第一印象其实是对的,所以Sails为我们隐藏了socket.io的逻辑,这两个代码是等价的,第一个使用socket.io,第二个使用Sailsconfig/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');
      }
    }
    

    同理,SailsonConnect方法等价于

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

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 2010-10-15
      • 2016-04-08
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      相关资源
      最近更新 更多