概述
本文为 WebSocket 协定的第六章,本文翻译的主要内容为 WebSocket 音讯发送与吸收相关内容。
发送与吸收音讯(协定正文)
6.1 发送数据
为了经由过程 WebSocket 衔接发送一条 WebSocket 音讯
,终端必需遵照以下几个步骤:
- 终端必需保证 WebSocket 衔接处于 OPEN 状况(见第 4.1 节和第 4.2.2 节)。假如 WebSocket 衔接的恣意一端的状况发生了转变,终端必需中断以下步骤。
- 终端必需将数据依据第 5.2 节定义的 WebSocket 帧举行封装。假如须要发送的数据过大或许在终端愿望最先发音讯时,假如数据在整体性这一点上不可用,那末终端能够会挑选经由过程在第 5.4 节中定义的一系列帧来举行封装。
- 包含数据的第一帧操作码(帧操作码)必需依据第 5.2 节中的内容设置的适宜的值,以便吸收者将数据剖析为文本或许二进制数据。
- 末了一个包含数据的帧的 FIN ( FIN 帧)字段必需和第 5.2 节中定义的一样设置为 1 。
- 假如数据被发送到了客户端,数据帧必需和第 5.3 节中定义的一样增加掩码。
- 假如在 WebsSocket 衔接中有协商扩大(第 9 章),在这些扩大中的定义和注重事项或许要分外斟酌。
- 被花样化的帧必需经由过程底层的网络衔接举行传输。
6.2 吸收数据
为了吸收 WebSocket 数据,终端须要监听底层网络衔接。输入的数据必需经由过程第 5.2 节定义的 WebSocket 帧举行剖析。假如收到了一个掌握帧(第 5.5 节),那末这个帧必需如 5.5 节中定义的体式格局举行处置惩罚。假如收到的是一个数据帧,那末终端必需注重 5.2 节中的定义在操作码(帧操作码)中的数据范例。在这一帧中的“运用数据”被定义为音讯的数据。假如帧中包含未分片的数据(第 5.4 节),那末就以为:一条 WebSocket 音讯的数据和范例被收到了。假如帧是分片数据的一部分,那末随后的帧包含的“运用数据”连起来就是数据的花样。当经由过程 FIN 字段(FIN帧)示意的末了一个片断被收到时,我们能够说:一条 WebSocket 音讯的数据(由片断组装起来的“运用数据”数据构成)和范例(注重分片音讯的第一帧)已被收到了。接下来的数据帧必需是属于一条新的 WebSocket 音讯。
扩大(第 9 章)能够转变数据怎样明白的体式格局,详细包含音讯的内容边境。扩大,除了在“运用数据”之前增加“扩大数据”以外,也能够修正“运用数据”(比方紧缩它)。
像第 5.3 节中说的那样,服务端在收到客户端的数据帧时必需去除掩码。