怎样自定义并使用websocket子协议

发布网友 发布时间:2022-04-21 16:08

我来回答

4个回答

懂视网 时间:2022-05-12 09:26

从websocket API 中了解到,websocket 可以自定义子协议,想深入了解一下,但是好像网上并没有类似的例子,请高手指点。

回复内容:

subprotocol 不过是 header 里的一个字段而已。

RFC 55 - The WebSocket Protocol
The WebSocket API 由于Websocket协议提供的是一个基于包的可靠传输协议,它并不像HTTP那样是个应用协议,它的包对内容并不像HTTP那样有Content-Type字段去描述,是一个比较底层的协议,就和TCP一样,如果要用来通信通常需要自己来定一个协议。那么subprotocol就可以作为一个标示来让服务端和客户端之间进行协商用。

客户端在进行连接的时候可以声明自己能接受的子协议类型。这和HTTP请求头里带的Accept和Accept-Encoding头字段一样,说明自己你可以接受那些类型文件,或者编码,通常是压缩类型

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch

热心网友 时间:2022-05-12 06:34

由于Websocket协议提供的是一个基于包的可靠传输协议,它并不像HTTP那样是个应用协议,它的包对内容并不像HTTP那样有Content-Type字段去描述,是一个比较底层的协议,就和TCP一样,如果要用来通信通常需要自己来定一个协议。那么subprotocol就可以作为一个标示来让服务端和客户端之间进行协商用。
客户端在进行连接的时候可以声明自己能接受的子协议类型。这和HTTP请求头里带的Accept和Accept-Encoding头字段一样,说明自己可以接受那些类型文件,或者编码,通常是压缩类型
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
HTTP的请求里带的这样,向server端说明它能理解哪些类型的数据。
然后和HTTP一样,Server会根据合适的头来返回相应的内容。 然后客户单就知道怎么样去解释响应的数据了。

热心网友 时间:2022-05-12 07:52

WebSocket协议是一种网络协议,它实现了浏览器与服务器的双向通讯的设计。

热心网友 时间:2022-05-12 09:26

websocket的子协议,定义的时候
var sock = new WebSocket(url,subportocol);
第一个参数表示要请求的地址URL,第二个参数(可选的,如果不写就默认是空字符串)字符串或者字符串组成的数组,每个字符串就是一个子协议。服务器返回响应客户端子协议才能建立连接,否则握手失败。如服务端告诉客户端使用str1协议建立连接:

请求:
Sec-WebSocket-Protocol:str1,str2
Sec-WebSocket-Version:13
Upgrade:websocket
响应:
Connection:Upgrade
Sec-WebSocket-Accept:lWc5qBYvZLWjFVzUOegIyRDnSG0=
Sec-Websocket-Protocol:str1
Upgrade:websocket

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com