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

9.扩展——WebSocket协议翻译

 
阅读更多

WebSocket客户端可以请求本规范的扩展,且WebSocket服务器可以接受一些或所有客户端请求的扩展。服务器不必响应不是客户端请求的任何扩展。如果扩展参数包含在客户端和服务器之间的协商中,这些参数必须按照参数应用到的扩展规范来选择。

9.1.协商扩展

客户端通过包含一个|Sec-WebSocket-Extensions|头字段请求扩展,其按照正常的HTTP头字段规则(参考[RFC2616], 4.2节)并且头字段的值按照以下ABNF定义[RFC2616]。注意本章使用的ABNF语法/规则来源于[RFC2616],包括“隐式的 *LWS规范”。如果客户端或服务器在协商阶段接收到的值不符合下边的ABNF,这种畸形数据的接收人必须立即_失败WebSocket连接_。

     Sec-WebSocket-Extensions = extension-list
     extension-list = 1#extension
     extension = extension-token *( ";" extension-param )
     extension-token = registered-token
     registered-token = token
     extension-param = token [ "=" (token | quoted-string) ]
         ;当使用引用字符串的语法变种时,引用字符串之后的值必须
         ;符合’token’ABNF

注意,像其他HTTP头字段,这个头字段可以跨多个行分割或组合,因此,以下是等价的:

     Sec-WebSocket-Extensions: foo
     Sec-WebSocket-Extensions: bar; baz=2

完全等价于

     Sec-WebSocket-Extensions: foo, bar; baz=2

所有使用的extension-token必须是一个egistered token(参考11.4节)。任何给定扩展提供的参数必须被扩展定义。注意,客户端只需提供使用任何公布的扩展,除非服务器表示它希望使用使用扩展,否则必须使用它们。

注意,扩展的顺序是重要的。在多个扩展间的相互作用可以定义在定义扩展的文档中。在没有这样定义的情况下,解释是它请求中的客户端列出的头字段表示一个它希望使用的头字段的偏好,第一个列出的选项是最优选的。服务器在响应中列出的扩展表示扩展是实际正在用于连接的扩展。扩展应该修改数据和/或组帧,数据的操作顺序应该假定是与打开阶段握手期间服务器响应中列出的扩展顺序是一样的。

例如,如果有两个扩展“foo”和“bar”,且如果服务器发送的头字段|Sec-WebSocket-Extensions|有值“foo”、“bar”,那么数据上的操作将变为bar(foo(data)),是更改数据本身(如压缩)或更改可能“堆叠(stack)”的组帧。

可接受的扩展头字段(注意:为了可读性,将折叠较长行)的非规范化例子:

     Sec-WebSocket-Extensions: deflate-stream
     Sec-WebSocket-Extensions: mux; max-channels=4; flow-control,
      deflate-stream
     Sec-WebSocket-Extensions: private-extension

服务器通过包含一个容纳了一个或多个扩展的客户端请求的|Sec-WebSocket-Extensions|头字段来接受一个或多个扩展。所有扩展参数的解释,和什么构成一个有效的到客户请求的参数集的服务器响应,将由各个扩展定义。

9.2.已知扩展

扩展提供了一种机制来实现选择性加入的附加协议特性。本文档没有定义任何扩展,但实现可以使用单独定义的扩展。

1
0
分享到:
评论

相关推荐

    socket.io不错的websocket

    标签中的“源码”意味着可能涉及到了Socket.IO的内部实现或自定义扩展,这通常需要深入理解Node.js和WebSocket协议。学习源码有助于开发者更好地调试和定制功能。 而“工具”则表明Socket.IO是一个实用的开发工具,...

    websocket-api.jar

    WebSocket API是Java编程语言中用于实现WebSocket协议的一个接口库,主要由JSR 356规范定义。WebSocket是一种在客户端和服务器之间建立长连接的协议,允许双方进行双向通信,即服务器可以主动向客户端推送数据,而不...

    jmeter5.0 r1840935 websocket插件

    3. **JMeterWebSocketSampler**: 这是专门为JMeter设计的一个组件,它扩展了JMeter的功能,使其能够支持WebSocket协议的测试。用户可以通过这个采样器创建、发送和接收WebSocket消息,进行功能测试和性能测试。 4. ...

    javaee7 标准websocket api

    JavaEE 7是Java企业版的一个重要版本,它引入了许多新特性和改进,其中就包括对WebSocket协议的标准化支持。WebSocket是一种在客户端和服务器之间建立持久连接的协议,允许双方进行全双工通信,即数据可以同时双向...

    jemter的websocket插件包

    标题 "jemter的websocket插件包" 涉及到的是使用JMeter进行WebSocket协议测试的知识。JMeter是一款强大的性能测试工具,最初主要用于HTTP和FTP服务器的负载与压力测试,但随着其发展,通过插件机制,也支持了对...

    chatter:使用Node.js,Express和Socket.io的Websocket与前端的Vanilla JS进行实时聊天的应用程序

    Socket.io是一个用于实时应用的JavaScript库,它在客户端和服务器之间建立了持久化的连接,利用WebSocket协议,并在WebSocket不可用时回退到其他传输机制(如轮询)。在"chatter"应用中,Socket.io负责实现实时通信...

    websocket_FWD.rar

    考虑到WebSocket协议允许两种帧类型——文本帧和二进制帧,处理函数需要能够正确区分并处理这两种帧。 对于错误处理和异常安全,需要确保在出现错误时,例如网络中断或无效数据,能够适当地关闭连接并清理资源。...

    jmeter--web socket引用插件包

    2. **websocket-common-9.4.12.v20180830.jar**: 这是Jetty的WebSocket共通模块,包含了WebSocket协议的核心实现。 3. **jetty-http-9.4.12.v20180830.jar**: 提供了HTTP协议的基础实现,是Jetty处理HTTP请求和响应...

    webscoket源码工程

    1. **WebSocket客户端和服务器**:它实现了WebSocket协议的完整客户端和服务器端,能够处理各种WebSocket扩展和子协议。 2. **WebSocket测试案例**:Autobahn包含了大量的测试案例,用于确保兼容性和正确性,这对于...

    知了堂实训项目:用JAVA EE+websocket实现谁是卧底游戏.zip

    2. **WebSocket协议**: WebSocket是一种在客户端和服务器之间建立持久连接的协议,允许双方进行全双工通信。在"谁是卧底"游戏中,玩家之间的实时交互需求强烈,WebSocket的使用确保了数据的即时传输,提高了用户...

    JMeter-WebSocketSampler-version-1.0.0

    在现代Web应用中,WebSocket协议作为一种双向通信技术,已经广泛应用。为了对使用WebSocket的应用进行性能和稳定性测试,Apache JMeter提供了WebSocket Sampler插件,版本为1.0.0。本文将详细介绍如何获取、安装以及...

    express- websocket

    WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许服务器与客户端之间建立持久的连接,从而实现双向数据传输。与传统的HTTP请求相比,WebSocket提供了更低的延迟和更高的效率,非常适合实时数据交换的...

    PHP实例开发源码——即时网络聊天 iWeb开源三剑客之iWebIM.zip

    1. **WebSocket协议**:WebSocket是一种在客户端和服务器之间建立持久连接的协议,使得双向通信成为可能,是实现即时通讯的基础。iWebIM很可能通过PHP WebSocket扩展或第三方库(如Ratchet)来实现这一功能。 2. **...

    多人房间匹配你画我猜。TypeScript + Go + WebSocket + MongoDB。毕业设计.zip

    3. **WebSocket**:WebSocket协议是为了解决HTTP协议在处理实时通信时的局限性而设计的。它允许客户端和服务器之间建立长时间保持的双向通信通道,非常适合于在线游戏这样的实时应用场景。 4. **MongoDB**:这是一...

    TS相关协议解析

    2. **WebSocket协议**:WebSocket是一种在客户端和服务器之间建立长连接的协议,提供了全双工通信。在TypeScript中,可以定义WebSocket接口来处理消息的发送和接收,以及错误处理。文档可能会解释如何使用typescript...

    The Definitive Guide to HTML5 WebSocket

    在《WebSocket协议》章节中,深入探讨了WebSocket协议的工作原理,它是一个基于TCP的协议,使用了HTTP升级机制,使得客户端和服务器之间可以在同一连接上同时进行双向数据交换。了解协议细节对于开发高效和安全的...

    vert.x-3.4.0.tar.gz

    5. **WebSocket Support**:vert.x 支持WebSocket协议,可用于创建实时双向通信应用。 6. **Non-blocking I/O**:vert.x 使用非阻塞I/O模型,这意味着它可以在单个JVM上处理大量并发连接,而不会耗尽系统资源。 7....

    PHP实例开发源码——中龙多人视频聊天室源码.zip

    2. **Websocket技术**:多人视频聊天室需要实现实时双向通信,这通常依赖于Websocket协议。Websocket提供了全双工通信,允许服务器与客户端之间持续的数据交换,使得视频聊天室可以即时发送和接收音频、视频流及其他...

    websocket坦克大战原形客户端

    WebSocket协议是在HTTP协议的基础上进行扩展的,主要解决HTTP协议的非持久性问题。传统的HTTP请求是基于请求-响应模型的,即客户端发起请求,服务器响应后关闭连接。而WebSocket协议提供了一种持续连接的方式,使得...

    NIM_Web_Demo-master.zip_fix6x5_nim web_socket聊天室_websocket_即时通讯

    首先,我们要了解WebSocket协议。WebSocket是一种在客户端和服务器之间建立长连接的协议,允许双向通信,从而实现真正的实时性。与传统的HTTP协议不同,WebSocket在建立连接后,双方可以随时发送数据,无需等待请求-...

Global site tag (gtag.js) - Google Analytics