websocket - sailsjs-在应用程序级别跟踪房间的最佳方法是什么

标签 websocket sails.js

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

在文档中:

This method is deprecated. Please keep track of your rooms in app-level code.



我是SailsJS的新手。

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

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

最佳答案

在这里,我做到了。希望这会有所帮助,尽管我不确定它是否完美,但对我有用。随时提出更正,改进的建议。
我在最需要它的 Controller 中声明了sails.rooms = {};(问题1 )。 (您可以随意命名。)sails.使它可以访问整个应用程序。
在 Controller 中

  /**
   * 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();
  },

NOTE: that you can list the WebSockets in a certain room using sails.io.sockets.in(ROOM_NAME). This should also help to purge the sails.rooms from disconnected sockets.

关于websocket - sailsjs-在应用程序级别跟踪房间的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40243294/

相关文章:

PHP/JavaScript - 检测哪些用户当前打开了页面

javascript - 即使状态更新也显示之前的内容 5 秒?

javascript - 网络套接字。连接到现有的

javascript - 在 MochaJS 测试套件中使用 --globals 变量

ssl - 使用 Sails 和 SSL 的 502 错误网关

c# - Websockets - 断开服务器消息

java - 在调用处理程序之前使用 Tomcat 8 和 Spring 4 ClassCastException 的 websockets

service - sails.js 使用查找查询时,服务返回对象未定义

sails.js - sails 10.x 水线 : What attribute type to use for Mongo objectID

java - 在 Sails.js 应用程序中使用 Java