Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 通过Socket.IO向所有关注者发送消息_Node.js_Swift_Socket.io - Fatal编程技术网

Node.js 通过Socket.IO向所有关注者发送消息

Node.js 通过Socket.IO向所有关注者发送消息,node.js,swift,socket.io,Node.js,Swift,Socket.io,我已经在我的Swift应用程序中实现了socket.io连接。我在后端运行node.js服务器。我现在可以向特定用户发送消息,如下所示: let connectedClients = new Map(); if(connectedClients.has("1")) { var socketInformation = connectedClients.get("1") // for userID 1 var socketID = socketInformation.client.i

我已经在我的Swift应用程序中实现了socket.io连接。我在后端运行node.js服务器。我现在可以向特定用户发送消息,如下所示:

let connectedClients = new Map();
if(connectedClients.has("1")) {
    var socketInformation = connectedClients.get("1") // for userID 1
    var socketID = socketInformation.client.id
    io.sockets.connected[socketID].emit('message', req.query.message)
} 
基本上,ConnectedClient持有键:值对,如
userID:socketID

我接下来要做的是,当我发布更新时,将消息发送给我的所有追随者。因此,当我发布更新时,我会将其添加到我的MySQL数据库中,但对于在线用户,我希望将更新实时发送到他们的屏幕上。我该怎么办

我觉得我有三个选择:

  • 我遍历所有连接的客户机,检查他们是否是我的追随者
  • 我遍历我所有的追随者,检查他们是否在地图上
  • 我为每个用户的所有追随者创建一个“房间”,并将消息发送到此房间
但我觉得应该有更好的办法。有什么建议吗?
另外,我想知道我的map(connectedClients)是否是存储当前连接设备的好方法。

您是否尝试过
io.sockets.emit(…)
?我的意思是:

const wsServer = require('socket.io');

let io = wsServer(webSocketsPort);
io.sockets.emit('your-event', () => 'hello, clients!');

这不会向所有连接的用户发出吗?我只想发送给特定数量的用户,即关注我帐户的用户(例如,可以将其视为我在Instagram上的追随者)。所以对于我从MySQL数据库中检索到的一群人,对不起,我知道你想发送给所有在线用户