【发布时间】:2017-03-03 05:23:37
【问题描述】:
我正在使用 node.js 的 express 框架制作一个应用程序,该框架通过 http 提供 html 内容并使用 websockets 进行聊天功能。我想知道如何同时完成两者。我的想法是为 websocket 连接使用不同的端口(因此 http 请求将到达端口 3000,而 websockets 将连接到端口 3001)但我不知道这是否是一个好的解决方案。我特别担心部署到 heroku 之类的东西,以及是否可以为我的应用程序指定不同的端口。
【问题讨论】:
-
唯一的方法是定义不同的端口。我真的建议为此制作两个不同的“应用程序”,它们可以相互依赖。您可以使用
node foreman同时运行这些服务。 -
确实没有理由为 webSocket 连接使用单独的端口。 webSocket 协议是专门设计的,因此它可以轻松地与您的 Web 服务器共享端口。它的工作方式是所有 webSocket 连接都以一个 http 请求开始,并在请求上设置了几个特定的标头。这允许您的核心 Web 服务器分辨哪些传入连接是常规 Web 服务器请求,哪些是建立 webSocket 连接的请求。您不需要两个端口上的两台服务器。
标签: node.js express websocket port