我使用一个库(ShareDB)进行操作转换,服务器端和客户端使用websocket-json流进行通信。但是,这个ShareDB是作为一个服务在nodejs上运行的(我正在使用zerorpc来控制我的节点进程),因为我的主要web框架是龙卷风(python)。我从这个thread中了解到,对于有状态的协议(如TCP ),连接由客户端端口来区分(因此只需要一个服务器端口)。根据这个response regarding how websockets handle multiple incoming requests,tcp和websockets之间的底层传输通道没有区别。
因此,我的问题是,如果我创建一个websocket从客户机到python服务器,然后从客户机创建到我的nodejs代码( ShareDB服务),服务器如何区分哪个套接字与哪个套接字?服务器是否有责任对给定时间的连接只使用一个套接字“侦听”(即首先与Python服务器建立通信,然后开始侦听第二个websocket?)
发布于 2017-01-02 23:06:52
在同一个物理服务器框上运行两个服务器进程的最简单方法是让每个进程在不同的端口上侦听,然后客户端连接到该服务器上的适当端口,以指示它要连接到哪个服务器。
如果由于服务器环境的原因,您只能拥有一个传入端口,那么您可以使用类似于代理的东西。您仍然让您的两个服务器监听不同的端口,但没有一个正在监听向外部世界开放的端口。代理监听对外部世界开放的一个传入端口,然后根据传入连接的某些特性,代理将该传入连接定向到适当的服务器进程。
代理可以配置为标识您试图通过URL或DNS主机名连接到哪个进程。
https://stackoverflow.com/questions/41432766
复制相似问题