這裏有很多websocket - >套接字包裝器(比如websockify),但是那裏有相反的東西嗎?具體來說,我希望能夠通過應用程序連接到TCP套接字,並將代理轉換爲websocket並轉移到另一個websocket服務器。TCP Socket到Websocket?
回答
從WebSocket客戶端到TCP服務器的橋接是一種通用解決方案,它將較低級別的TCP協議封裝到較高層級別的WebSocket協議。它允許瀏覽器(或其他websocket客戶端)與任意TCP服務器進行通信。請注意,客戶端(JavaScript)應用程序仍必須能夠對TCP服務器說的協議進行解碼/編碼。
反向操作不是通用的,需要從TCP客戶端應用程序到橋接器的消息進行特殊組幀,以便橋接器將知道如何將WebSocket消息編碼到TCP服務器。 WebSockets是基於消息的傳輸,而TCP是較低級別的流傳輸。 TCP傳輸層在協議本身中沒有消息的概念,因此必須在高層處理。換句話說,您將不得不做大量的工作來使您的TCP客戶端應用程序能夠與橋應用程序進行通信,因爲它將直接在應用程序中實現WebSocket客戶端。實際上,直接實現可能更少,因爲已經有大多數流行語言可用的WebSocket客戶端庫。
您將無法通過網橋將預先存在的TCP客戶端連接到現有的WebSocket服務器,而無需更改客戶端和網橋(以添加消息邊界和操作碼信息),或者您將需要特殊的WebSocket服務器忽略WebSocket消息邊界並將傳入數據視爲流(在較高層處理消息解析)。
也許你可以給一個用例,你認爲這可能有用嗎?
免責聲明:我做了websockify。
我不完全清楚你要問什麼,但WebSocket API主要適用於客戶端。
您如何對服務器端腳本進行編碼以及您使用何種語言完全取決於您。編寫服務器端腳本時,應該能夠選擇是否使用TCP套接字等。
呃,什麼?我認爲這是比較清楚的。 – 2013-02-18 23:03:51
我不確定你在找什麼,但爲了幫助未來的人,我會寫我所做的解決我的問題。
我的問題: 我希望能夠舉辦noVNC我的web應用程序的服務器上,我想非WebSocket的VNC服務器能夠理解它,而無需使用websockify。
我的解決辦法: 我用ws-tcp-bridge Node.js的模塊彌合的WebSocket端口< --lport>其中noVNC客戶端將連接到與VNC TCP服務器的主機。
舉例: 這種情況從vncserver的機器運行以下命令:
ws-tcp-bridge --method=ws2tcp --lport=5555 --rhost=127.0.0.1:5902
這樣,我就能夠在端口5902
舉辦非的WebSocket的vncserver並通過noVNC與它連接在港口5555
。
沒有測試過這個,但是與x11vnc vnc服務器配合得很好。
- 1. Node.JS WebSocket和Socket
- 2. ActionScript Socket vs WebSocket
- 3. Java socket TCP teardown
- 4. Tcp Socket Closed
- 5. Java TCP Socket Sniffing
- 6. TCP socket chrome
- 7. TCP open socket delay
- 8. 使用TCP Socket和WebSocket的Heroku上的NodeJS應用程序
- 9. Tcp/IP Socket異常
- 10. Socket和TCP在Java
- 11. TCP socket請閱讀
- 12. TCP Socket沒有接收到數據c
- 13. 如何加速寫入到tcp socket?
- 14. ZeroMQ,如何連接到外部tcp socket?
- 15. HTML5 WebSocket連接到C#TCP套接字
- 16. Asp.NET 5監聽tcp socket
- 17. 安卓tcp socket問題
- 18. Qt TCP Socket讀取問題
- 19. Java Socket/TCP和/ dev/urandom
- 20. 共享tcp socket android服務
- 21. TCP Socket通信限制
- 22. Linux的TCP/IP socket編程
- 23. tcp socket數據亂序?
- 24. TCP NTP Java Socket程序
- 25. TCP Socket綁定超時
- 26. Tcp Socket + send()錯誤#10054
- 27. C#winForm的TCP IP Socket
- 28. TCP socket編程錯誤
- 29. 使用shared_ptr boost tcp socket C++
- 30. 的WebSocket在TCP模式
那麼,例如,您的websockify在VNC服務器上使用,以使用noVNC。我需要將本地客戶端連接到該VNC服務器,但只有websockified部分纔會暴露給互聯網。所以看起來我可能真的有我的工作爲我.. – 2013-02-18 23:03:29
標記這是答案,因爲它是當時最適用。感謝您的幫助,kanaka。 – 2013-03-06 18:59:39
@ kanaka,你不是不得不在websockify中實現非邊界數據流嗎?從TCP服務器返回到瀏覽器客戶端的數據本質上最初是一個數據流。 – 2014-10-31 15:37:59