Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 跨多个服务器持久化websocket连接对象_Node.js_Sockets_Websocket_Web Chat - Fatal编程技术网

Node.js 跨多个服务器持久化websocket连接对象

Node.js 跨多个服务器持久化websocket连接对象,node.js,sockets,websocket,web-chat,Node.js,Sockets,Websocket,Web Chat,我正在使用服务器上的websocket库建立套接字连接 我在集群中有多台服务器,我想知道如何在集群中的另一台服务器上使用相同的套接字连接对象 我还想知道webchat实现的最佳选项是原生websocket还是socket.io。您不能在多个服务器上使用同一个实际的socket对象。套接字对象表示客户端和一个物理服务器进程之间的套接字连接。可以构建一个虚拟套接字对象,该对象将知道其连接所在的服务器,向该服务器发送一条消息,然后从另一台服务器通过实际套接字发送出去 这是一种虚拟的方法。您设置了no

我正在使用服务器上的websocket库建立套接字连接

我在集群中有多台服务器,我想知道如何在集群中的另一台服务器上使用相同的套接字连接对象


我还想知道webchat实现的最佳选项是原生websocket还是socket.io。您不能在多个服务器上使用同一个实际的socket对象。套接字对象表示客户端和一个物理服务器进程之间的套接字连接。可以构建一个虚拟套接字对象,该对象将知道其连接所在的服务器,向该服务器发送一条消息,然后从另一台服务器通过实际套接字发送出去

这是一种虚拟的方法。您设置了node.js集群,并将redis适配器与socket.io一起使用。它使用一个基于redis的中心存储来跟踪每个物理连接是哪个服务进程。然后,当您想从任何服务器进程向特定客户机发送消息时,您可以通过socket.io发送该消息,它会在连接该socket的redis数据库中查找您,联系实际的服务器,并要求它通过另一个服务器进程上当前存在的socket.io连接将消息发送到该特定客户端。类似地,您可以向多组套接字广播,它将在确保消息到达客户机的掩护下完成所有工作,而不管客户机连接到哪个实际服务器


您当然可以为普通webSocket连接构建类似的东西,而其他人已经构建了它的一部分。我对野外存在的东西还不够熟悉,无法为普通的webSocket提供任何建议。如果你想使用普通的webSocket,你可以通过Google找到并阅读来开始横向扩展webSocket服务器。

@shubhamkatariya-如果你的问题现在被问到了,您可以通过单击答案左侧的复选标记向社区表明这一点,并在堆栈溢出上为自己赢得一些信誉点,以便遵循正确的过程。