我目前正在尝试了解NodeJS
和express
。当前,当通过WebSocket
发出POST
请求时,我想向express
的连接客户端发送消息。我该怎么办?
这是我当前的代码:
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);
});
答案 0 :(得分: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,显示了它的外观。
希望我有所帮助