【问题标题】:Send message to clients over WebSocket during express post request在快速发布请求期间通过 WebSocket 向客户端发送消息
【发布时间】:2020-03-27 17:34:40
【问题描述】:

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

【问题讨论】:

    标签: node.js express websocket


    【解决方案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,它显示了它的外观。

    希望我有所帮助

    【讨论】:

    • 它有帮助!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2012-01-18
    • 2018-07-05
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多