摘要:概述本文為協(xié)議的第六章,本文翻譯的主要內(nèi)容為消息發(fā)送與接收相關(guān)內(nèi)容。在這一幀中的應(yīng)用數(shù)據(jù)被定義為消息的數(shù)據(jù)。接下來的數(shù)據(jù)幀必須是屬于一條新的消息。像第節(jié)中說的那樣,服務(wù)端在收到客戶端的數(shù)據(jù)幀時必須去除掩碼。
概述
本文為 WebSocket 協(xié)議的第六章,本文翻譯的主要內(nèi)容為 WebSocket 消息發(fā)送與接收相關(guān)內(nèi)容。
發(fā)送與接收消息(協(xié)議正文) 6.1 發(fā)送數(shù)據(jù)為了通過 WebSocket 連接發(fā)送一條 WebSocket 消息,終端必須遵循以下幾個步驟:
終端必須保證 WebSocket 連接處于 OPEN 狀態(tài)(見第 4.1 節(jié)和第 4.2.2 節(jié))。如果 WebSocket 連接的任意一端的狀態(tài)發(fā)生了改變,終端必須中止以下步驟。
終端必須將數(shù)據(jù)按照第 5.2 節(jié)定義的 WebSocket 幀進行封裝。如果需要發(fā)送的數(shù)據(jù)過大或者在終端希望開始發(fā)消息時,如果數(shù)據(jù)在整體性這一點上不可用,那么終端可能會選擇通過在第 5.4 節(jié)中定義的一系列幀來進行封裝。
包含數(shù)據(jù)的第一幀操作碼(幀操作碼)必須根據(jù)第 5.2 節(jié)中的內(nèi)容設(shè)置的合適的值,以便接收者將數(shù)據(jù)解析為文本或者二進制數(shù)據(jù)。
最后一個包含數(shù)據(jù)的幀的 FIN ( FIN 幀)字段必須和第 5.2 節(jié)中定義的一樣設(shè)置為 1 。
如果數(shù)據(jù)被發(fā)送到了客戶端,數(shù)據(jù)幀必須和第 5.3 節(jié)中定義的一樣添加掩碼。
如果在 WebsSocket 連接中有協(xié)商擴展(第 9 章),在這些擴展中的定義和注意事項也許要額外考慮。
被格式化的幀必須通過底層的網(wǎng)絡(luò)連接進行傳輸。
6.2 接收數(shù)據(jù)為了接收 WebSocket 數(shù)據(jù),終端需要監(jiān)聽底層網(wǎng)絡(luò)連接。輸入的數(shù)據(jù)必須通過第 5.2 節(jié)定義的 WebSocket 幀進行解析。如果收到了一個控制幀(第 5.5 節(jié)),那么這個幀必須如 5.5 節(jié)中定義的方式進行處理。如果收到的是一個數(shù)據(jù)幀,那么終端必須注意 5.2 節(jié)中的定義在操作碼(幀操作碼)中的數(shù)據(jù)類型。在這一幀中的“應(yīng)用數(shù)據(jù)”被定義為消息的數(shù)據(jù)。如果幀中包含未分片的數(shù)據(jù)(第 5.4 節(jié)),那么就認為:一條 WebSocket 消息的數(shù)據(jù)和類型被收到了。如果幀是分片數(shù)據(jù)的一部分,那么隨后的幀包含的“應(yīng)用數(shù)據(jù)”連起來就是數(shù)據(jù)的格式。當(dāng)通過 FIN 字段(FIN幀)表示的最后一個片段被收到時,我們可以說:一條 WebSocket 消息的數(shù)據(jù)(由片段組裝起來的“應(yīng)用數(shù)據(jù)”數(shù)據(jù)組成)和類型(注意分片消息的第一幀)已經(jīng)被收到了。接下來的數(shù)據(jù)幀必須是屬于一條新的 WebSocket 消息。
擴展(第 9 章)可能改變數(shù)據(jù)如何理解的方式,具體包括消息的內(nèi)容邊界。擴展,除了在“應(yīng)用數(shù)據(jù)”之前添加“擴展數(shù)據(jù)”之外,也可以修改“應(yīng)用數(shù)據(jù)”(例如壓縮它)。
像第 5.3 節(jié)中說的那樣,服務(wù)端在收到客戶端的數(shù)據(jù)幀時必須去除掩碼。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101912.html
摘要:概述經(jīng)過半年的搗鼓,終于將協(xié)議全篇翻譯完成?,F(xiàn)在將所有章節(jié)全部整理到一篇文章中,方便大家閱讀。如果大家想看具體的翻譯文檔,可以去我的中查看。大家有相關(guān)類型的需要,建議大家可以嘗試下。 概述 經(jīng)過半年的搗鼓,終于將 WebSocket 協(xié)議(RFC6455)全篇翻譯完成?,F(xiàn)在將所有章節(jié)全部整理到一篇文章中,方便大家閱讀。如果大家想看具體的翻譯文檔,可以去我的GitHub中查看。 具體章節(jié)...
摘要:允許接收和轉(zhuǎn)發(fā)消息。一個等待接收消息的程序是一個消費者。發(fā)送者會先連接到發(fā)送一條消息,然后退出。注意這里的是要和之前的名稱一致。翻譯日期另因為想入門第一次想著翻譯,第一次然后希望多多提出不足。 gitBook https://joursion.gitbooks.io/... Title: RabbitMQ tutorials ---- Hello World (Javascript) ...
摘要:用實現(xiàn)簡單協(xié)議從瀏覽器說起瀏覽器提供的非常簡潔。創(chuàng)建連接連接建立時的回調(diào)收到消息時的回調(diào)連接出錯時的回調(diào)連接終止時的回調(diào)發(fā)送消息告訴我們也就是說,在創(chuàng)建對象時,瀏覽器嘗試與服務(wù)端建立連接發(fā)送請求建立個服務(wù)端一旦收到數(shù)據(jù),就會觸發(fā)。 用 Node 實現(xiàn)簡單 WebSocket 協(xié)議 從瀏覽器 WebSocket API 說起 瀏覽器提供的 WebSocket API 非常簡潔。 let...
時間:2018年04月11日星期三 說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學(xué)源碼:https://github.com/zccodere/s... 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 什么是Netty 高性能、事件驅(qū)動、異步非阻塞的IO Java開源框架 基于NIO的客戶...
摘要:概述本文為協(xié)議的第五章,本文翻譯的主要內(nèi)容為傳輸?shù)臄?shù)據(jù)相關(guān)內(nèi)容。注意無論協(xié)議是否使用了,幀都需要添加掩碼。服務(wù)端收到?jīng)]有添加掩碼的數(shù)據(jù)幀以后,必須立即關(guān)閉連接。服務(wù)端禁止在發(fā)送數(shù)據(jù)幀給客戶端時添加掩碼?;A(chǔ)數(shù)據(jù)幀協(xié)議通過進行了正式的定義。 概述 本文為WebSocket協(xié)議的第五章,本文翻譯的主要內(nèi)容為WebSocket傳輸?shù)臄?shù)據(jù)相關(guān)內(nèi)容。 有興趣了解該文檔之前幾張內(nèi)容的同學(xué)可以見: ...
閱讀 3251·2023-04-25 20:35
閱讀 3612·2019-08-30 15:54
閱讀 1992·2019-08-30 15:43
閱讀 2183·2019-08-29 15:14
閱讀 1890·2019-08-29 11:17
閱讀 3380·2019-08-26 13:36
閱讀 695·2019-08-26 10:15
閱讀 2835·2019-08-23 15:41