`
jinnianshilongnian
  • 浏览: 21435077 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2405130
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:2997788
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5631528
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:257583
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1593212
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:248982
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5847622
Group-logo
跟我学Nginx+Lua开...
浏览量:698184
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:780495
社区版块
存档分类
最新评论

6.发送和接收数据——WebSocket协议翻译

 
阅读更多

6.1.发送数据

为了_发送一个WebSocket消息_,其中包括WebSocket连接之上的/data/,端点必须执行以下步骤。

  1. 端点必须确保WebSocket连接处于OPEN状态(比较 4.1节和4.2.2节)。如果在任何时刻WebSocket连接的状态改变了,端点必须终止以下步骤。

  2. 端点必须封装/data/到定义在5.2节的一个WebSocket帧。如果要发送的数据太大或如果在端点想要开始发生数据时数据作为一个整体不可用,端点可以按照5.2节的定义交替地封装数据到一系列的帧中。

  3. 第一个包含数据的帧的操作码(帧-opcode)必须按照5.2节的定义被设置为适当的值用于接收者解释数据是文本还是二进制数据。。

  4. 包含数据的最后帧的FIN位(帧-fin)必须按照5.2节的定义设置位1。

  5. 如果数据正由客户端发送,帧必须按照5.3节的定义被掩码。

  6. 如果任何扩展(第9章)已经协商用于WebSocket连接,额外的考虑可以按照这些扩展定义来应用。

  7. 已成形的帧必须在底层网络连接之上传输。

6.2.接收数据

为了接收WebSocket数据,端点监听底层网络连接。传入数据必须按照5.2节的定义解析为WebSocket帧。如果接收到一个控制帧(5.5节),帧必须按照5.5节定义的来处理。当接收到一个数据帧(5.6节)时,端点必须注意5.2节由操作码(帧-opcode)定义的数据的/type/。这个帧的“应用数据”被定义为消息的/data/。如果帧由一个未分片的消息组成(5.4节),这是说_已经接收到一个WebSocket消息_,其类型为/type/且数据为/data/。如果帧是一个分片消息的一部分,随后数据帧的“应用数据”连接在一起形成/data/。当接收到由FIN位(帧-fin)指示的最后的片段时,这是说_已经接收到一个WebSocket消息_,其数据为/data/(由连续片段的“应用数据”组成)且类型为/type/(分配消息的第一个帧指出)。随后的数据帧必须被解释为属于一个新的WebSocket消息。

扩展(第9章)可以改变数据如何读的语义,尤其包括什么组成一个消息的边界。扩展,除了在负载中的“应用数据”之前添加“扩展数据”外,也可以修改“应用数据”(例如压缩它)。

服务器必须按照5.3节的定义为从客户端接收到的数据帧移除掩码。

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics