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.已知扩展
扩展提供了一种机制来实现选择性加入的附加协议特性。本文档没有定义任何扩展,但实现可以使用单独定义的扩展。
相关推荐
.netcore 3.1已经集成了Asp.Core.WebSocket,无需单独引入其他包。 新建Asp.Core web项目,如果是用于技术验证建议选择有项目模板的,直接使用已有页面进行验证。 demo中已经实现了主要的应用场景,可通过url给后台...
catalina.jar和websocket-api.jar,java开发html5必备包
import org.java_websocket.WebSocket; import org.java_websocket.WebSocketImpl; import org.java_websocket.framing.Framedata; import org.java_websocket.handshake.ClientHandshake; import org.java_...
如何使用Postman来发送数据到后端Spring Boot应用程序,并使用WebSocket建立实时通信通道,以便后端应用程序可以向Postman推送消息。 学会这个方法,就能缩短你的项目开发周期,以及提高你的开发效率。如果提出您的...
WebSocket协议译文
4、org.eclipse.jetty.websocket.api_9.1.1.v20140108.jar 5、org.eclipse.jetty.websocket.client_9.1.1.v20140108.jar 6、org.eclipse.jetty.websocket.common_9.1.1.v20140108.jar 解压后将这些jar包拷贝到Jmeter...
websocket_api.jar 连接websocket用的 websocket_api.jar 连接websocket用的
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数据交换变得...
包含翻译后的API文档:websocket-api-9.4.43.v20210629-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.eclipse.jetty.websocket:websocket-api:9.4.43.v20210629; 标签:eclipse、jetty、websocket、api、...
包含翻译后的API文档:jakarta.websocket-api-1.1.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:jakarta.websocket:jakarta.websocket-api:1.1.2; 标签:websocket、api、jakarta、jar包、java、...
包含翻译后的API文档:javax.websocket-api-1.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:javax.websocket:javax.websocket-api:1.1; 标签:javax、websocket、api、中文文档、jar包、java; 使用方法:解压...
该文件是websocket-sharp项目的打包文件,导入到C#项目中可以便捷的实现websocket连接功能。十分的方便,源码在github上https://github.com/sta/websocket-sharp
概要:本文介绍如何使用 Spring Boot 3.X 和 WebSocket 实现消息推送,并动态开启、关闭和取消定时任务。通过WebSocket实现实时通信,结合定时任务管理,可实现灵活的消息推送和任务控制。 使用人群:适合有Spring ...
包含翻译后的API文档:jakarta.websocket-api-1.1.2-javadoc-API文档-中文(简体)版.zip; Maven坐标:jakarta.websocket:jakarta.websocket-api:1.1.2; 标签:websocket、api、jakarta、jar包、java、中文文档; ...
websocket.js,websocket页面使用javascript文件,定义.onopen、onmessage、onclose、onerror函数,html通过调用 openSocket(userId)函数,建立websocket链接;其中userId必须唯一;
java websocket <groupId>org.java-websocket <artifactId>Java-WebSocket <version>1.3.4 <scope>test </dependency>
一个简易的多人聊天室,实现实时更新
websocket-api.jar下载,websocket必备jar包,在Eclipse中编写servlet时出现"The import javax.servlet cannot be resolved" 问题解决办法
修改default-websocket.json自定义websocket服务配置,包括: serverCode:服务名称 serverHost:服务地址 serverPort:服务端口 remoteHost:心跳服务器地址 remotePort:心跳服务器端口 java -jar Console-...
stomp js websocket stomp js websocket stomp js websocket stomp js websocket stomp js websocket stomp js websocket