我正在使用Node js(Express)中的WebSocket(ws)库编写实时连接Web服务器,所以当我在pm2集群模式下运行服务器时,websocket无法正常工作。是否有任何方法可以使pm2之间共享数据与websocket集群。
答案 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集群带来的副作用-这可能是性能最高的,尽管在您的设置中可能不可行。祝你好运!