zab*_*mba 8 websocket sails.js
sails.sockets.rooms()和sails.sockets.socketRooms()都已弃用
在文档中:
不推荐使用此方法.请使用应用级代码跟踪您的房间.
我是SailsJS的新手.
问题1:我怎么能开始这个?我应该在哪里声明我的房间数组或哈希?
问题2:如何获取连接的客户端列表?
这是我做的方式。希望这会有所帮助,虽然我不相信它是完美的,但它对我有用。随时提出更正、改进的建议。
我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;
}
Run Code Online (Sandbox Code Playgroud)
我最终得到一个如下所示的 JSON:
{
{ "room1" :
{
"ksadj1234clkjnelckjna" : "john",
"eroiucnw934cneo3vra09" : "marie"
}
},
{ "room2" :
{
"kslaksdjfnasjdkfa9jna" : "antoine",
"qweuiqcnw934cne3vra09" : "michelle"
}
}
}
Run Code Online (Sandbox Code Playgroud)
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();
},
Run Code Online (Sandbox Code Playgroud)
注意:您可以使用
sails.io.sockets.in(ROOM_NAME). 这也应该有助于清除sails.rooms断开连接的套接字。
| 归档时间: |
|
| 查看次数: |
445 次 |
| 最近记录: |