我正在使用库(ShareDB)进行操作转换,并且服务器和客户端使用websocket-json-stream进行通信。然而,这个ShareDB是作为一个服务在nodejs上运行的(我使用zerorpc来控制我的节点进程),因为我的主要web框架是Tornado(python)。我从这个thread了解到,使用TCP等有状态协议时,客户端端口的连接是不同的(因此只需要一个服务器端口)。根据这个response regarding how websockets handle multiple incoming requests,tcp和websockets之间的底层传输通道没有区别。所以我的问题是,如果我从客户端创建一个websocket到python服务器,然后也从客户端到我的nodejs代码(ShareDB服务)如何区分哪个套接字与哪个套接字?服务器的责任是在给定的时间只有一个套接字“监听”连接(即先建立与Python服务器的通信,然后开始监听第二个websocket?)区分多个Websocket
0
A
回答
1
运行最简单的方法同一个物理服务器上的两个服务器进程是让它们中的每一个在不同的端口上侦听,然后客户端连接到该服务器上的相应端口,以指示它尝试连接到哪个服务器。
如果你的服务器环境只能有一个入站端口,那么你可以使用类似代理的东西。您仍然有两台服务器在不同的端口上侦听,但是没有人在侦听对外开放的端口。代理侦听对外部开放的一个传入端口,然后根据传入连接的某些特征,代理将该传入连接指向适当的服务器进程。
代理可以配置为识别您尝试通过URL或DNS主机名连接的进程。
相关问题
- 1. 将表中的多个分区分区
- 2. 多个websocket连接
- 3. 分区用户 - 多个OpenID
- 4. 创建多个SquashFS分区
- 5. Linq跨多个表区分?
- 6. nodejs websocket分页
- 7. Hive中的单个vs多个分区
- 8. 左分区固定,多个右分区可滚动
- 9. 使用IList.Contains(分区)对多个分区进行DocumentDb查询
- 10. 多RDD与分区?
- 11. 网站子分区的多个域
- 12. 如何区分多个jasmine.Ajax.stubRequest调用
- 13. Spark分区数据多个文件
- 14. BigQuery - 每个分区有多少条目?
- 15. 在Apache Kafka中设置多个分区
- 16. oracle多个散列分区平行吗?
- 17. 查询多个分区配置单元?
- 18. 区分多个属性文件
- 19. 桌子上的多个分区?
- 20. 多个表或使用分区?
- 21. 划分Python模块成多个区域
- 22. 如何区分NSOperationQueue中的多个NSXMLParser
- 23. 多个conemu窗口 - 如何区分?
- 24. Hazelcast - 分区组+多个备份
- 25. Java rmi,区分多个客户端
- 26. 与Spring的多个私有WebSocket消息
- 27. 如何用Jetty打开多个websocket Java
- 28. Python websocket,订阅多个频道
- 29. 使用自定义分区显示多个trs与多个tds
- 30. 编码多项式分区
我不能完全遵循什么是连接到什么。你用“服务器”和“客户端”这个术语来描述你的意思。听起来你有两台服务器(一台python服务器和一台nodejs服务器)和一台客户机。所以,我会假设客户端连接到您的两台独立服务器中的每一台。但是,然后你问服务器如何区分,但每个服务器应该只有一个连接到给定的客户端?对你想要做的事感到困惑。仅供参考,您通常会使用与使用Cookie识别传入http连接的相同方式识别传入webSocket连接。 – jfriend00
如果您要从客户端连接到同一物理服务器计算机上的每个单独服务器,则每个服务器进程都将监听另一个端口,并且客户端将连接到相应的端口以确定它是哪个服务器连接到。 – jfriend00
谢谢,我认为你总结得比我更好,所以我会编辑措辞。两台服务器都在同一个物理系统上......我使用Heroku,据我所知它们只允许单个端口打开。 – Flaminator