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