我正在使用庫(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