区分多个 Websocket

Differentiating Multiple Websockets

我正在使用库(ShareDB)进行操作转换,服务器端和客户端使用websocket-json-stream进行通信。但是,此 ShareDB 作为服务在 nodejs 上 运行(我使用 zerorpc 来控制我的节点进程),因为我的主要 Web 框架是 Tornado (python)。我从这个 thread that with a stateful protocol such as TCP, the connections are differentiated by the client port (so only one server port is required). And according to this 了解到,tcp 和 websockets 之间的底层传输通道没有区别。

所以我的问题是,如果我创建一个从客户端到 python 服务器的 websocket,然后再从客户端到我的 nodejs 代码(ShareDB 服务),服务器如何区分哪个套接字进入用哪个?服务器是否只负责在给定时间内为一个连接提供一个套接字 'listening'(即首先与 Python 服务器建立通信,然后开始侦听第二个 websocket?)

运行 同一个物理服务器上的两个服务器进程的最简单方法是让它们中的每一个侦听不同的端口,然后客户端连接到该服务器上的适当端口以指示哪个服务器它正在尝试连接到。

如果你的服务器环境只能有一个传入端口,那么你可以使用代理之类的东西。您仍然让两台服务器侦听不同的端口,但没有一台服务器侦听对外开放的端口。代理侦听一个对外开放的传入端口,然后根据传入连接的某些特征,代理将该传入连接定向到适当的服务器进程。

代理可以配置为通过 URL 或 DNS 主机名识别您尝试连接的进程。