js的Socket添加Sec-WebSocket-Protocol
时间: 2024-02-15 08:04:37 浏览: 137
使用Sec-Websocket-Protocol
在 JavaScript 中使用 WebSocket 时,可以通过在创建 WebSocket 对象时传递一个选项对象来添加 `Sec-WebSocket-Protocol`。例如:
```javascript
const socket = new WebSocket('ws://localhost:8080/', ['protocol1', 'protocol2']);
```
其中,第二个参数是一个数组,包含了要使用的协议名称。在服务端,需要检查客户端发送过来的 `Sec-WebSocket-Protocol` 头部,以确定客户端请求使用的协议是否被支持。若支持,则服务端需要在握手响应中添加 `Sec-WebSocket-Protocol` 头部,以告知客户端使用的协议。
以下是服务端 Node.js 中添加 `Sec-WebSocket-Protocol` 头部的代码示例:
```javascript
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (socket, req) => {
const protocols = req.headers['sec-websocket-protocol'];
const supportedProtocols = ['protocol1', 'protocol2'];
const selectedProtocol = protocols.split(',').find((p) => supportedProtocols.includes(p.trim()));
if (selectedProtocol) {
socket.send(`Selected protocol: ${selectedProtocol}`);
socket.protocol = selectedProtocol;
} else {
socket.send('No supported protocol found');
socket.close();
return;
}
socket.on('message', (data) => {
console.log(`Received message from ${socket.protocol}: ${data}`);
});
});
```
在上述示例中,服务端首先获取客户端发送过来的 `Sec-WebSocket-Protocol` 头部,然后从支持的协议列表中选取一个协议,将其添加到握手响应中,并将其存储在 WebSocket 对象的 `protocol` 属性中。这样,在后续的通信中,服务端就可以根据 `protocol` 属性来区分不同的协议。
阅读全文