【问题标题】:how to know if a specific socket in open in socket.io?如何知道 socket.io 中是否打开了特定的套接字?
【发布时间】:2014-05-06 18:23:30
【问题描述】:

我只是从 socket.io 和 node.js 开始。我有一些用于向特定客户端发送消息的代码:

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

我从 pgsql 服务器获取接收者套接字 ID。有时更新需要一点时间,所以当用户断开连接时,receiver2 仍然存在,并且会向特定的套接字 id 发出一条消息,由于套接字不存在,因此会出错。 有没有办法可以检查套接字 id 是否存在然后发出消息? 我可以获取已连接套接字的列表并检查它是否存在于数组中,但这可能需要一些时间。

【问题讨论】:

  • 为什么要在数据库中存储套接字 ID?
  • 每个用户名我有 2 个套接字 ID(2 个设备),我也有两个从其他地方访问套接字 ID
  • 一个更简单的设计是让每个连接的设备向服务器询问信息,然后您可以回复。如果设备未连接,它不会询问。要回答您的问题,您无法知道套接字是否打开。
  • 我只是在没有检查数据库的情况下完成了它。谢谢您的回复

标签: node.js sockets socket.io


【解决方案1】:

好吧,如果您的客户端连接到特定房间,那么您可以像这样检索一组客户端:

io.sockets.clients('room');

您可以通过以下方式获得所有房间的数组:

io.sockets.manager.rooms;

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 2013-04-18
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多