【问题标题】:sailsjs - what's the best way to track rooms at app levelsailsjs - 在应用程序级别跟踪房间的最佳方式是什么
【发布时间】:2017-03-07 16:46:47
【问题描述】:

sails.sockets.rooms()sails.sockets.socketRooms() 均已弃用

在文档中:

此方法已弃用。请在应用级代码中跟踪您的房间。

我是 SailsJS 的新手。

问题 1:我该如何开始呢?我应该在哪里声明我的房间数组或哈希?

问题 2:如何获取已连接的客户端列表?

【问题讨论】:

    标签: websocket sails.js


    【解决方案1】:

    我就是这样做的。希望这会有所帮助,尽管我不确定它是否完美,但它对我有用。随时提出更正、增强的建议。

    我在控制器中声明了一个sails.rooms = {};问题 1),我最需要它。 (你可以随意命名。)

    sails. 为其提供跨应用程序的访问权限。

    在控制器中

      /**
       * Socket connection
       */
      connect: function(req, res) {
         // Check if it's socket connection
         if (!req.isSocket) { return res.badRequest(); } 
    
         // label the room to ROOM_NAME
         sails.sockets.join(req, ROOM_NAME);
    
         /**
          * Manage my `sails.rooms` HERE
          * e.g. 
          */
          if (!sails.rooms[ROOM_NAME]) {
            sails.rooms[ROOM_NAME] = {};
          }
          sails.rooms[ROOM_NAME][req.socket.id] = HUMAN_FRIENDLY_LABEL;
      }
    

    我最终得到一个如下所示的 JSON:

    {
       { "room1" : 
         {
           "ksadj1234clkjnelckjna" : "john",
           "eroiucnw934cneo3vra09" : "marie"
         }
       },
       { "room2" : 
         {
           "kslaksdjfnasjdkfa9jna" : "antoine",
           "qweuiqcnw934cne3vra09" : "michelle"
        }
       }
    }
    

    config/sockets.js 中,我管理断开连接

      afterDisconnect: function(session, socket, cb) {
        console.log(socket.id + " disconnected");
        /**
         * Manage sails.rooms HERE
         * e.g.
         */
        for (r in sails.rooms) {
          delete sails.rooms[r][socket.id];
          //
          // YOUR CODE
          //
        }
    
        return cb();
      },
    

    注意:您可以使用sails.io.sockets.in(ROOM_NAME) 列出某个房间中的WebSocket。这也应该有助于从断开的套接字中清除sails.rooms

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      相关资源
      最近更新 更多