gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:32:47 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com