node.js - 在快速发布请求期间通过 WebSocket 向客户端发送消息
问题描述
我目前正在尝试理解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);
});
解决方案
您可以在顶层声明一个变量,然后将连接的套接字分配给它。然后使用它向您的客户发送消息。例如:
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);
});
此外,这可能有效,但一般来说,它不适用于您想要扩展和重用的实际应用程序!所以我建议为套接字创建一个单例类。并在您想要的任何地方使用它。在这里,我在这里有一个以前的答案,它显示了它的样子。
希望我有所帮助
推荐阅读
- c++ - 为什么 C++ 将大数四舍五入到 ceil 并将小数四舍五入到 floor
- qt - 如何在自定义组件中声明 EventHandler(插槽?)类型的属性并在其使用中为其分配函数
- flutter - W/Choreographer(11277):未来的帧时间是 13.988632 毫秒!检查图形 HAL 是否使用正确的时基生成 vsync 时间戳
- android - 在这个递归方法中返回什么?
- selenium - Azure DevOps VSTest (Selenium) 超时任务失败
- python-3.x - 是否可以将 cli 输出(字符串)转换为 Python 3 中的字典
- haskell - 编程语言中参数化多态函数(不是临时多态)操作的全部空间是多少?
- python - 如何从python中的1个字符串中删除特定的case元素
- c# - Trying to Download File(s) from a List
variable into a zip file - javascript - cannot be cast to java.lang.String Expo