【问题标题】:How to implement PM2 clustering with WebSockets, Nodejs如何使用 WebSockets、Nodejs 实现 PM2 集群
【发布时间】:2019-12-13 03:17:32
【问题描述】:

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

【问题讨论】:

  • 节点之间需要共享什么样的数据?我不确定你在问什么。您是否要求通过每个节点提供的 websocket 共享数据?
  • 是的。当我在集群模式下运行服务器时,websocket 通信无法正常工作。它可能会向其他用户发送消息,也可能不会。

标签: node.js websocket pm2


【解决方案1】:

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

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

如果您可以将您的 websocket 拉出到它自己的实例中并避免 pm2 集群的副作用——这可能是性能最高的,尽管在您的设置中可能不可行。祝你好运!

【讨论】:

    【解决方案2】:

    您可以将库切换到 socket.io 他们已经通过使用 redis 适配器 for socket.io Socket.IO Redis 解决了这个问题

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

    【讨论】:

    • 是的,socket.io 在集群模式下工作。但由于一些性能问题,我使用了 websocket。是否有任何相关的解决方案。
    • @vipinsharma 因此,我觉得这并不能真正回答问题。你找到解决办法了吗?
    猜你喜欢
    • 2017-10-13
    • 2021-01-10
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2020-01-21
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多