node ws 中的广播方法
时间: 2023-06-16 14:02:27 浏览: 193
在 Node.js 中使用 WebSocket 实现广播的方式,需要在服务器端维护一个客户端列表,来保存所有连接到服务器的客户端。当服务器接收到某个客户端的消息时,需要将消息发送给所有连接到服务器的客户端。
以下是一个使用 Node.js WebSocket 实现广播的示例代码:
```javascript
const WebSocket = require('ws');
// 创建 WebSocket 服务器
const wss = new WebSocket.Server({ port: 8080 });
// 客户端列表
const clients = new Set();
// 添加客户端
function addClient(client) {
clients.add(client);
}
// 移除客户端
function removeClient(client) {
clients.delete(client);
}
// 广播消息
function broadcast(message) {
clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
}
// 监听连接事件
wss.on('connection', (ws) => {
// 添加客户端
addClient(ws);
// 监听消息事件
ws.on('message', (message) => {
// 广播消息
broadcast(message);
});
// 监听关闭事件
ws.on('close', () => {
// 移除客户端
removeClient(ws);
});
});
```
在以上示例代码中,我们定义了三个方法:`addClient`、`removeClient` 和 `broadcast`。`addClient` 方法用于添加客户端到客户端列表中,`removeClient` 方法用于从客户端列表中移除客户端,`broadcast` 方法用于将消息广播给所有客户端。
在 `connection` 事件的回调函数中,我们监听了客户端的消息事件,并在收到消息时调用 `broadcast` 方法将消息广播给所有客户端。在客户端关闭连接时,我们调用 `removeClient` 方法将客户端从客户端列表中移除。
阅读全文