【问题标题】:Open socket connection from backend to client running on a different machine in socket.io Node在 socket.io 节点中打开从后端到运行在不同机器上的客户端的套接字连接
【发布时间】:2021-06-07 22:44:43
【问题描述】:

我有一个 Node 应用程序,它应该在一个 Docker 容器上运行前端,在另一个容器上运行后端。前端和后端都在使用 Express。

在此应用程序在单台机器上运行之前,我使用套接字连接与客户端通信 (sockect.io)

但是现在我将拥有两台不同的机器,所以我想知道在后端和前端之间建立套接字连接的最佳策略。 原因是在后端我可以访问所有包含所有信息的数据库,因此它应该能够在每次发生特定情况时将这些信息发送给客户端。 问题是,目前我在前端使用代理将所有客户端请求路由到后端,因此后端对客户端“隐藏”,我不确定如何打开套接字连接。 我想知道最好的策略是否是不使用代理,而是在后端允许 CORS,以便客户端可以直接与其通信并打开套接字连接。 这里有什么优点和缺点?有什么建议吗?

【问题讨论】:

    标签: node.js reactjs docker express socket.io


    【解决方案1】:

    这不是关于技术的问题,而是关于部署的问题。我在这里的理解是,您正在尝试将基于 socket.io 的服务作为不同的进程在不同的机器上运行。

    最便宜和最简单的方法是让前端将其套接字连接到不同的子域。您可以通过将另一个 A 记录添加到您的 DNS 条目来实现此目的。 [steps]

    如果你无论如何都在 NGINX 后面部署,你可以尝试反向代理套接字端点。 [steps]

    我会推荐我的第一个想法,它通常是最简单的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多