如何以最少的延迟发送Websocket消息



我在一个用Node.js编程的Websocket服务器上工作,我计划向超过20,000名用户发送多播消息。消息将以一秒的定期间隔发送,但是我担心Node.js服务器的性能。

我理解Node.js异步工作,并根据需要创建和销毁线程,但我不确定它的效率。理想情况下,我希望以平均5毫秒的延迟发送消息。

目前,我通过运行所有连接的客户端的for循环向所有用户发送消息,如下所示:

function StartBroadcastMessage()
{
  console.log("broadcasting socket data to client...!");
  for(var i=0;i < clientsWithEvents.length;i++){ //Runs through all the clients
      client = clientsWithEvents[i];
      if(client.eventid.toLowerCase() == serverEventName.toLowerCase()) //Checks to see if the Client Event names and server names are the same
        client.connection.sendUTF(GetEventSocketFeed(client.eventid)); //Sends out event data to that particular client
    }
  timeoutId = setTimeout(StartBroadcastMessage,2*1000);
}

这是发送具有低延迟的多播消息的有效方法,还是有更好的方法?

另外,是否有一种有效的方法在服务器上执行负载测试,模拟连接到Websocket服务器的许多设备?(到目前为止,我已经找到了这个节点应用https://github.com/qarea/websockets-stress-test)

您可以使用socket。IO广播消息

var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
  socket.broadcast.emit('user connected');
});

这将避免延迟(迭代所有套接字对象和格式化消息)在发送单个消息到客户端

相关内容

  • 没有找到相关文章

最新更新