protocols对应的就是发起ws连接时, 携带在请求头中的Sec-WebSocket-Protocol属性, 服务端可以获取到此属性的值用于通信逻辑(即通信子协议,当然用来进行token认证也是完全没问题的) 代码示例 //前端varaWebSocket =newWebSocket(url ['用户token']);//后端@OverridepublicvoidafterConnectionEstablished(WebSocketSession sess...
Sec-WebSocket-Protocol是一个HTTP头部字段,用于WebSocket握手期间,客户端和服务器之间协商所使用的子协议。客户端可以在WebSocket握手请求中指定它希望使用的子协议,而服务器可以在响应中选择一个或多个支持的子协议进行响应。这个字段允许客户端和服务器就通信过程中使用的消息格式或行为规则达成一致。
constWebSocket=require('ws');constserver =newWebSocket.Server({port:3000}); server.on('connection',(socket, req) =>{consttoken = req.headers['sec-websocket-protocol'];// 验证token的合法性if(isValidToken(token)) {// 鉴权通过,进行后续操作socket.send('鉴权通过,欢迎连接!'); }else{// 鉴...
|Sec-WebSocket-Accept|表示服务器是否接收这个连接,如果有这个字段,这个字段的值必须为客户端提供的|Sec-WebSocket-Key|字段的值与预先定义好的GUID值进行哈希,在进行base64编码。任何其他的值都表明服务器没有接受客户端发起的请求。 服务端返回客户端请求响应之后,客户端对这些字段会在客户端进行校验,如果|Sec-WebS...
服务端拟使用的协议,该值从客户端发送的Sec-WebSocket-Protocol中选择,若服务端都不支持,值为空 - Sec-WebSocket-Extensions 服务端拟使用协议扩展 2.3 断接握手 客户端和服务端都可以发送包含指定控制序列的控制帧(Close控制帧)以开始关闭握手。一方在接收到关闭控制帧时,只需发送一个关闭帧作为响应,然后关闭连接。
“Sec-WebSocket-Accept”的值是服务端采用与客户端一致的密钥计算出来后返回客户端的, “HTTP/1.1 101 Switching Protocols”表示服务端接受 WebSocket 协议的客户端连接, 经过这样的请求-响应处理后,客户端服务端的 WebSocket 连接握手成功, 后续就可以进行 TCP 通讯了。
Sec-WebSocket-Protocol:chat,superchat Sec-WebSocket-Version:13 通过GET发送HTTP请求,需要HTTP版本号>=1.1 Host:主机名,用于客户端和服务端都能验证它们是否使用的是同一个主机 Upgrade: 升级到WebSocket协议 Connection:连接类型应该被升级,通常与Upgrade一起使用 ...
Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 在HTTP Header 中设置 Upgrade 字段, 其字段值为 websocket, 并在 Connection 字段指示 Upgrade, 服务端若支持 WebSocket 协议, 并同意握手, 可以返回如下所示的结构: HTTP/1.1 101 Switching Protocols ...
Sec-WebSocket-Accept: hXXXXXXXXXXXXXXxGmM=Sec-WebSocket-Protocol: binary Sec-WebSocket-Accept字段是由握手请求中的Sec-WebSocket-Key字段生层的。 握手成功后,通信不再使用HTTP协议,而采用WebSocket独立的数据帧。如下图所示,为协议帧格式: FIN,指明Frame是否是一个Message里最后Frame(之前说过一个Message可能又多个...
HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=Sec-WebSocket-Protocol: chat 来自客户端的首行遵照 Request-Line 格式。 来自服务器的首行遵照 Status-Line 格式。Request-Line 和 Status-Line 制品定义在 RFC2616。一旦客户端和服务器都...