我正在使用庫(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. 多個websocket連接
- 4. kafka - 多個主題vs多個分區
- 5. 表分區與多個表
- 6. Linq跨多個表區分?
- 7. Rails使用多個分區
- 8. 創建多個SquashFS分區
- 9. 分區用戶 - 多個OpenID
- 10. 拆分row_number()在多個分區上的分區
- 11. 多個HTML5 WebSocket連接
- 12. 在多個分區中分割視頻
- 13. SSAS分區,多少個太多
- 14. SSAS:多分區
- 15. Hive中的單個vs多個分區
- 16. nodejs websocket分頁
- 17. 使用IList.Contains(分區)對多個分區進行DocumentDb查詢
- 18. 左分區固定,多個右分區可滾動
- 19. Rx-Netty:將websocket框架拆分爲多個片段
- 20. 多RDD與分區?
- 21. PostgreSQL多層分區
- 22. 如何區分多個Titanium.Network.createHTTPClient()返回
- 23. 如何區分多個jasmine.Ajax.stubRequest調用
- 24. 多個conemu窗口 - 如何區分?
- 25. 劃分Python模塊成多個區域
- 26. Rails從分區獲得多個值
- 27. 多個表區分數據只有
- 28. 區分多個邊緣碰撞體?
- 29. 區分多個組的形式
- 30. 在Apache Kafka中設置多個分區
我不能完全遵循什麼是連接到什麼。你用「服務器」和「客戶端」這個術語來描述你的意思。聽起來你有兩臺服務器(一臺python服務器和一臺nodejs服務器)和一臺客戶機。所以,我會假設客戶端連接到您的兩臺獨立服務器中的每一臺。但是,然後你問服務器如何區分,但每個服務器應該只有一個連接到給定的客戶端?對你想要做的事感到困惑。僅供參考,您通常會使用與使用Cookie識別傳入http連接的相同方式識別傳入webSocket連接。 – jfriend00
如果您要從客戶端連接到同一物理服務器計算機上的每個單獨服務器,則每個服務器進程都將監聽另一個端口,並且客戶端將連接到相應的端口以確定它是哪個服務器連接到。 – jfriend00
謝謝,我認爲你總結得比我更好,所以我會編輯措辭。兩臺服務器都在同一個物理系統上......我使用Heroku,據我所知它們只允許單個端口打開。 – Flaminator