2014-03-27 25 views
0

我刚刚开始使用socket.io和node.js.我有一个将消息发送到特定的客户端的一些代码:如何知道在socket.io中打开的特定套接字?

io.sockets.sockets[receiverssocket2].emit('message', 
{"source": sendersusername, 
"message": msg.message, 
"target": msg.target}); 

我收到从pgsql的服务器接收器插槽ID。有时需要更新一些,所以当用户断开接收者socketocket2仍然存在,并且一个消息被发送到特定的套接字ID,由于套接字不存在,这会产生错误。 有没有办法可以检查套接字ID是否存在然后发出消息? 我可以得到连接套接字的列表并检查它是否存在于数组中,但这可能需要时间。

+0

你为什么要在数据库中存储套接字标识符? – Gntem

+0

我对每个用户名都有2个插座ID(2个设备),我也有两个从其他地方访问插座ID – user3455531

+0

更简单的设计就是让每个连接的设备向服务器询问信息,然后您可以回复。如果设备没有连接,它不会问。要回答你的问题,你不知道套接字是否打开。 – Houseman

回答

0

好吧,如果你的客户端连接到特定的房间,然后你可以检索客户的一个这样的数组:

io.sockets.clients('room'); 

,您可以通过此获得的所有客房的数组:

io.sockets.manager.rooms; 
相关问题