如何在socket.io中检查socket是否存在(连接)多个节点和socket.io-redis

我使用socket.io与多个节点,socket.io-redis和nginx . 我按照本指南:http://socket.io/docs/using-multiple-nodes/

我正在尝试:在一个函数(服务器站点),我想通过socketid查询此套接字已连接或断开连接

我试过 io.of('namespace').connected[socketid] ,它只适用于当前进程(这意味着它只能检查当前进程) .

有人可以帮帮我吗?谢谢你提前 .

回答(2)

2 years ago

我如何检查套接字是否存活(连接)socketid我尝试了namespace.connected [socketid],它只适用于当前进程 .

正如您所说,单独的进程意味着套接字仅在它们首次连接的进程上注册 . 您需要一起使用socket.io-redisconnect all your nodes ,每次客户端连接/断开连接时,您可以做的是 broadcast an event ,以便每个节点都有一个更新的所有客户端的实时列表 .

2 years ago

看看here

如上所述,您应该使用socket.io-redis使其在多个节点上运行 .

var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));