首页 > 解决方案 > 在快速发布请求期间通过 WebSocket 向客户端发送消息

问题描述

我目前正在尝试理解NodeJSexpress。目前我想在请求通过WebSocket时向连接的客户端发送一条消息。我怎样才能做到这一点?POSTexpress

这是我当前的代码:

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);
});

标签: node.jsexpresswebsocket

解决方案


您可以在顶层声明一个变量,然后将连接的套接字分配给它。然后使用它向您的客户发送消息。例如:

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);
});

此外,这可能有效,但一般来说,它不适用于您想要扩展和重用的实际应用程序!所以我建议为套接字创建一个单例类。并在您想要的任何地方使用它。在这里,我在这里有一个以前的答案它显示了它的样子。

希望我有所帮助


推荐阅读