在http请求和WebSocket之间发送服务器intern消息

blpfk2vs  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(96)

我有一个微控制器,它将数据发送到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这样的东西吗?

cxfofazt

cxfofazt1#

也许最简单的方法开始使用它是:
1.不要创建两个单独的脚本,而是将express服务器和WebSocket服务器合并到一个进程中。(您仍然可以将这两个服务器拆分到多个文件中,但关键是您希望它们都从同一个节点示例运行)。
1.创建(全局)EventEmitter。
1.当一个HTTP请求进来时,您可以使用这个事件发射器来emit某个事件。

  1. WebSocket在EventEmitter上使用.on()订阅事件。当它们触发时,把信息发送回去。
    1.确保在WebSocket连接关闭时调用.off(),以免造成内存泄漏。

相关问题