我有一个微控制器,它将数据发送到node js http服务器。我想通过WebSocket连接向web客户端发送消息,此时微控制器点击http请求。
这是我的路线:
const express = require("express");
const router = express.Router();
router.route("/sendData").post(async (req, res) => {
//some validation
//Here I want to initiate a message which gets sent to a web client through a websocket
return res.status(200).json({ message: "sent data to server")};
});
module.exports = router;
字符串
然后我有一个WebSocket服务器示例:
import { WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 8080 });
wss.on('connection', function connection(ws) {
//here i want to send a message to a client when the microcontroller hits the http request
ws.send('data received');
});
型
现在,如何在http-route和WebSocket服务器之间创建通信?我对Node js中处理进程是新手。我需要像node-ipc这样的东西吗?
1条答案
按热度按时间cxfofazt1#
也许最简单的方法开始使用它是:
1.不要创建两个单独的脚本,而是将express服务器和WebSocket服务器合并到一个进程中。(您仍然可以将这两个服务器拆分到多个文件中,但关键是您希望它们都从同一个节点示例运行)。
1.创建(全局)EventEmitter。
1.当一个HTTP请求进来时,您可以使用这个事件发射器来
emit
某个事件。.on()
订阅事件。当它们触发时,把信息发送回去。1.确保在WebSocket连接关闭时调用
.off()
,以免造成内存泄漏。