express-ws如何向指定的客户端推送消息
时间: 2024-01-11 08:06:14 浏览: 23
要向指定的客户端推送消息,您可以在服务器端使用 WebSocket 的 `send()` 方法向特定的客户端发送消息。以下是一个示例代码:
```javascript
// server.js
const express = require('express');
const expressWs = require('express-ws');
const app = express();
expressWs(app);
const clients = [];
app.ws('/chat', (ws, req) => {
clients.push(ws);
ws.on('message', (msg) => {
// 广播收到的消息给所有客户端
clients.forEach((client) => {
client.send(msg);
});
});
ws.on('close', () => {
// 移除断开连接的客户端
const index = clients.indexOf(ws);
if (index !== -1) {
clients.splice(index, 1);
}
});
});
app.post('/message/:clientId', (req, res) => {
const clientId = req.params.clientId;
const message = req.body.message;
// 找到指定的客户端并向其发送消息
const client = clients.find((c) => c.id === clientId);
if (client) {
client.send(message);
res.status(200).send('Message sent to client ' + clientId);
} else {
res.status(404).send('Client not found');
}
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
```
在上面的示例中,我们添加了一个新的路由 `/message/:clientId`,用于向指定的客户端发送消息。当收到 POST 请求时,我们从请求参数中获取 `clientId` 和消息内容,并使用 `find()` 方法查找指定的客户端。如果找到客户端,我们使用 `send()` 方法向其发送消息,并返回一个成功的响应。如果未找到指定的客户端,我们返回一个 404 错误响应。
请注意,上述代码只是一个示例,您可能需要根据您的实际需求进行相应的修改和适配。