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

Posted

技术标签:

【中文标题】在快速发布请求期间通过 WebSocket 向客户端发送消息【英文标题】:Send message to clients over WebSocket during express post request 【发布时间】: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);
);

【问题讨论】:

【参考方案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 向客户端发送消息的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket 根据初始请求向服务器发送数据

websocket——通信梳理(短轮询、长轮询、socket、websocket、socket.io)

WebSocket浅谈

websocket协议及案例

无法通过 websocket 从服务器向客户端发送数据

通过 websocket 继续向客户端发送数据