簡體   English   中英

Websockets僅在Socket.io 1.3.4中傳輸

[英]Websockets transport only in Socket.io 1.3.4

當我使用Socket.io 0.9.16時,我可以設置所需的和唯一的傳輸(websockets)。 不,我升級到版本1(1.3.4)並且無法理解,如何限制傳輸。

看起來它開始與輪詢連接,然后升級到websockets如果“它”想要。 我希望它開始並始終只在websockets上工作。

所有webSocket連接都以HTTP請求開頭。 這就是規范對webSocket的作用。 客戶端請求在第一個HTTP請求中升級到webSocket協議,如果服務器同意,則套接字“升級”為webSocket協議。

如果服務器不支持webSocket並且不同意升級, socket.io也會發送帶有第一個http請求的輪詢參數,因此如果它沒有切換到webSocket,那么它將立即以http輪詢開始。

所以,簡短的回答是,如果你看一下網絡跟蹤,你可能會認為它是從http輪詢開始的,但這實際上只是啟動webSocket連接的HTTP請求。 這是應該的方式。

如果您想了解有關如何建立webSocket連接的更多信息,您可以閱讀這個很好的摘要

這是啟動webSocket連接的請求:

GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

並且,這是服務器響應同意升級到webSocket連接:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

這就是webSocket協議的設計方式,使相同的網絡基礎設施可以支持HTTP連接和webSocket連接,並允許客戶端查詢服務器以查看它是否支持webSocket。

成功“升級”后,此套接字上只會說出webSocket協議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM