在快递请求期间通过WebSocket向客户端发送消息

时间:2020-03-27 17:34:40

标签: node.js express websocket

我目前正在尝试了解NodeJSexpress。当前,当通过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);
});

1 个答案:

答案 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,显示了它的外观。

希望我有所帮助