多线程nodeJS和Socket IO

时间:2018-01-25 02:09:34

标签: node.js multithreading sockets

好的,多线程nodeJS并不是我读过的问题。只需部署几个相同的应用程序,并使用nginx作为所有应用程序的反向代理和负载均衡器。

但实际上,原生的cluster模块也能很好地工作,我找到了。

但是,如果socket.io应用nodeJS,该怎么办?我用nodeJS + socket.IO尝试了相同的策略;然而,它显然不起作用,因为发出的每个套接字事件将或多或少地均匀分布,并且除了建立连接的套接字之外不知道请求来自何处。

我现在能想到的最佳方法是将nodeJS服务器和socket.IO服务器分开。水平扩展nodeJS服务器(多个相同的应用程序),但只有一个socket.IO服务器。虽然我认为这对我们的解决方案来说已经足够了,但我仍然需要留意未来。有没有人成功横向扩展Socket.IO?那么多线程?

1 个答案:

答案 0 :(得分:1)

socket.io网站上的指南使用Redis和一个名为socket.io-redis

的包

https://socket.io/docs/using-multiple-nodes/

看起来就像连接的单个池一样,每个节点实例都连接到它。

将套接字服务器放在单独的服务(微服务)上可能很好,缺点是需要管理两个实例之间的通信。