如何使用WebSockets,Nodejs实现PM2集群

时间:2018-07-13 07:35:57

标签: node.js websocket pm2

我正在使用Node js(Express)中的WebSocket(ws)库编写实时连接Web服务器,所以当我在pm2集群模式下运行服务器时,websocket无法正常工作。是否有任何方法可以使pm2之间共享数据与websocket集群。

2 个答案:

答案 0 :(得分:0)

您可以将库切换到socket.io,他们已经通过将redis适配器用于socket.io Socket.IO Redis

来解决此问题。
  

通过使用socket.io-redis适配器运行socket.io,您可以在不同的进程或服务器中运行多个socket.io实例,这些实例或服务器可以相互广播并相互发射事件。

答案 1 :(得分:0)

据我了解,这就是集群模式的意义所在。它无法使正在运行的多个“节点”之间的连接保持活动状态。直接来自PM2文档:

请确保您的应用程序是无状态的,这意味着该进程中不会存储任何本地数据,例如,会话/ websocket连接,会话内存和相关数据。使用Redis,Mongo或其他数据库在进程之间共享状态。

如果您可以将websocket放入其自己的实例中并避免pm2集群带来的副作用-这可能是性能最高的,尽管在您的设置中可能不可行。祝你好运!