区分多个WebSocket

2024-06-16 12:03:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用一个库(ShareDB)进行操作转换,服务器端和客户端使用websocketjson流进行通信。然而,这个ShareDB是作为服务在nodejs上运行的(我使用zerorpc来控制我的节点进程),因为我的主要web框架是Tornado(python)。我从这个thread中了解到,对于TCP这样的有状态协议,连接是由客户机端口区分的(因此只需要一个服务器端口)。根据这个response regarding how websockets handle multiple incoming requests,tcp和websockets之间的底层传输通道没有区别。在

所以我的问题是,如果我创建一个从客户机到python服务器,然后从客户机到nodejs代码(ShareDB服务)的websocket,服务器如何区分哪个套接字与哪个套接字相匹配?服务器是否有责任在给定的时间内只让一个套接字“监听”一个连接(即首先与Python服务器建立通信,然后开始监听第二个websocket?)在


Tags: 服务器框架web客户端客户机节点websockets进程
1条回答
网友
1楼 · 发布于 2024-06-16 12:03:41

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

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

可以将代理配置为通过URL或DNS主机名来标识您试图连接到哪个进程。

相关问题 更多 >