我在网站上运行了同一个Nodejs应用程序的多个实例。我使用websocket。
让我们说客户端连接到实例#1。我想将他转移到#2实例。
我正在做的是Instance#1将数据发送到Redis DB,然后实例#2获取它。但是,如何将客户端重定向到另一个实例?
答案 0 :(得分:0)
您可以尝试socket.io
,它可以解决您的问题
使用npm install socket.io
安装此软件包,然后转到http://socket.io/了解文档
答案 1 :(得分:0)
我很确定你无法将一个开放套接字从一个节点进程传递到另一个节点进程。
如果您有办法从外部访问特定实例(使用不同的端口,ip或dns),您可以在握手时使用http重定向路由套接字连接,或者在使用客户端的特殊事件建立连接之后将用于断开连接并重新连接到另一个实例。
答案 2 :(得分:0)
您需要断开与#1实例的连接并与#2实例连接。虽然您可以通过在客户端编写一个包装器来以某种方式模拟它,但是它无法进行软切换,这将与#1断开连接并重新连接到#2。 如果您使用负载均衡器,只需断开与客户端或服务器端的连接(假设您将#1实例停止转动)并让客户端重新连接。
答案 3 :(得分:0)
socket.io中有前端和服务器端, 在两端之间,你应该注册事件,在服务器端,你应该注册客户端事件:发出在客户端注册的服务器事件,并使用broadcast.emit将消息发送到其他实例, 同样在客户端,您应该注册服务器事件:发出具有回调函数的客户端事件