文档章节

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

j
 jway
发布于 2015/05/21 16:08
字数 695
阅读 6
收藏 0

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节的定义为从客户端接收到的数据帧移除掩码。

本文转载自:http://jinnianshilongnian.iteye.com/blog/1909961

j
粉丝 4
博文 55
码字总数 0
作品 0
长沙
私信 提问
WebSocket 协议 RFC 文档(全中文翻译)

概述 经过半年的捣鼓,终于将 WebSocket 协议(RFC6455)全篇翻译完成。现在将所有章节全部整理到一篇文章中,方便大家阅读。如果大家想看具体的翻译文档,可以去我的GitHub中查看。 具体章节...

黄Java
02/19
0
0
【译】 WebSocket 协议第十二章——使用其他规范中的WebSocket协议

概述 本文为 WebSocket 协议的第十二章,本文翻译的主要内容为如何使用其他规范中的 WebSocket 协议。 有兴趣了解该文档之前几章内容的同学可以见: 【译】WebSocket 协议——摘要( Abstra...

黄Java
02/19
0
0
基于socket.io快速实现一个实时通讯应用

随着web技术的发展,使用场景和需求也越来越复杂,客户端不再满足于简单的请求得到状态的需求。实时通讯越来越多应用于各个领域。 HTTP是最常用的客户端与服务端的通信技术,但是HTTP通信只能...

薄荷前端
04/22
0
0
如何使用Django WebSocket Redis 快速搭建在线聊天室?

     一言不合就上效果图演示         项目:http://112.74.164.107:9990/   1、安装组建   redis: yum install redis/apt install redis   2、创建虚拟化环境并进入   p...

java进阶架构师
2018/12/10
0
0
【译】WebSocket 协议第十章——安全性考虑(Security Considerations)

概述 本文为 WebSocket 协议的第九章,本文翻译的主要内容为 WebSocket 扩展相关内容。 有兴趣了解该文档之前几章内容的同学可以见: 【译】WebSocket 协议——摘要( Abstract ) 【译】Web...

黄Java
02/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
12分钟前
0
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
13分钟前
0
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
25分钟前
1
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
28分钟前
0
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部