在快速发布请求期间通过 WebSocket 向客户端发送消息
Posted
技术标签:
【中文标题】在快速发布请求期间通过 WebSocket 向客户端发送消息【英文标题】:Send message to clients over WebSocket during express post request 【发布时间】:2020-03-27 17:34:40 【问题描述】:我目前正在尝试了解NodeJS
和express
。目前,当POST
请求通过express
进入时,我想向连接的客户端发送一条消息到我的WebSocket
。我该怎么做?
这是我当前的代码:
const WebSocket = require('ws').Server;
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const server = new WebSocket(
server: app.listen(8181)
);
app.use(bodyParser.json());
server.on('connection', socket =>
socket.on('message', message =>
console.log(`received from a client: $message`);
);
socket.send('Hello world!');
);
app.post('/', function (req, res)
console.log(req.body.name);
res.sendStatus(200);
);
【问题讨论】:
【参考方案1】:您可以在顶层声明一个变量,然后将连接的套接字分配给它。然后使用它向您的客户发送消息。例如:
let ws = null;
server.on('connection', socket =>
ws = socket;
socket.on('message', message =>
console.log(`received from a client: $message`);
);
socket.send('Hello world!');
);
app.post('/', function (req, res)
console.log(req.body.name);
if (ws) ws.send('Welcome!');
res.sendStatus(200);
);
此外,这可能有效,但一般来说,它不能在您想要扩展和重用的实际应用中正常运行!所以我建议为套接字创建一个单例类。并在您想要的任何地方使用它。在这里,我有一个先前的答案here,它显示了它的外观。
希望我有所帮助
【讨论】:
它有帮助!非常感谢。以上是关于在快速发布请求期间通过 WebSocket 向客户端发送消息的主要内容,如果未能解决你的问题,请参考以下文章