【问题标题】:Logic on disconnect sails.js socket.io断开sails.js socket.io的逻辑
【发布时间】:2014-02-26 05:24:35
【问题描述】:

我将sails.js 与socket.io 的原始API 一起使用。现在,当用户断开连接时,我想通知其他所有人。通常我会这样做:

socket.on('disconnect', function () {
    //disconnect logic
});

但我不确定如何在sails.js 控制器中完成此操作。任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    从 Sails v0.9.8 开始,您的 config/sockets.js 文件将同时具有 onConnectonDisconnect 方法,可让您访问连接/断开连接的套接字和会话。

    【讨论】:

      【解决方案2】:

      我们可以使用 config/sockets.js 如下。

       // config/sockets.js
       onConnect: function(session, socket) {
       // If a user is logged in, subscribe to them
       if (session.user) {
         User.subscribe(socket, session.user);
       }
      
      },
      
       onDisconnect: function(session, socket) {
      
        // If a user is logged in, unsubscribe from them
        if (session.user) {
        User.unsubscribe(socket, session.user);
        // If the user has no more subscribers, they're offline
         if (User.subscribers(session.user.id).length == 0) {
         console.log("User "+session.user.id+" is gone!");
         // Do something!
         }
        }
      
       }
      

      【讨论】:

        【解决方案3】:

        对于 Sails 0.12.3

        config/sockets.js

          // beforeConnect: function(handshake, cb) {
          //   // `true` allows the connection
          //   return cb(null, true);
          //
          //   // (`false` would reject the connection)
          // },
        
        
          /***************************************************************************
          *                                                                          *
          * `afterDisconnect`                                                        *
          *                                                                          *
          * This custom afterDisconnect function will be run each time a socket      *
          * disconnects                                                              *
          *                                                                          *
          ***************************************************************************/
          // afterDisconnect: function(session, socket, cb) {
          //   // By default: do nothing.
          //   return cb();
          // },
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-24
          • 1970-01-01
          • 1970-01-01
          • 2014-03-10
          • 2015-03-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多