簡體   English   中英

netty websocket連接通過java客戶端

[英]netty websocket connection via java client

是否可以在沒有握手請求的情況下在java代碼中創建websocket連接?

我知道如何用handhsake請求創建一個使用以下內容:

  String request = "GET " + path + " HTTP/1.1\r\n"
            + "Upgrade: WebSocket\r\n" + "Connection: Upgrade\r\n"
            + "Host: " + host + "\r\n" + "Origin: " + origin + "\r\n"
            + extraHeaders.toString() + "\r\n";

但我想要避免上述情況,一旦我打開套接字連接,只想在頻道上發送幀?...這可能嗎?

沒有WebSocket握手,您無法創建WebSocket連接。 WebSocket握手和成幀是協議的關鍵部分。 握手是HTTP兼容的,允許WebSockets更容易地與現有的Web基礎結構交互。 除此之外,握手還增加了安全機制並允許跨源資源共享( CORS )。

握手后,每個WebSocket幀仍然不是原始數據。 WebSocket是一種基於消息的協議,因此幀頭包含消息描述,幀長度,消息類型(二進制,文本,ping等)等。此外,必須使用正在運行的XOR來屏蔽從客戶端(瀏覽器)到服務器的數據面具。 這是為了避免HTTP中介(代理,HTTP緩存等)中的理論漏洞。

不要被名稱中的“Socket”誤導。 WebSockets具有原始TCP套接字的許多優點,例如全雙工,雙向,長壽命和低延遲,但它是基於消息的傳輸協議,分層在原始TCP套接字上並使用HTTP友好握手。

有關更多詳細信息,請參閱官方IETF 6455 WebSocket規范

暫無
暫無

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

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