Node.js nodejs中由服务器启动的服务器客户端websocket消息?

Node.js nodejs中由服务器启动的服务器客户端websocket消息?,node.js,express,websocket,Node.js,Express,Websocket,我有一个NodeJS应用程序,它通过POST请求从传感器设备接收数据。它还充当前端来监控这些数据。我希望它通过websocket向所有连接的客户端发送数据更新 以下是我的想法: const express=require('express'); 常量app=express(); const expressWs=require('express-ws')(应用程序); 常量ws=expressWs.getWss('/ws'); 函数sendAll(数据){ forEach(每个函数(客户端){ s

我有一个NodeJS应用程序,它通过POST请求从传感器设备接收数据。它还充当前端来监控这些数据。我希望它通过websocket向所有连接的客户端发送数据更新

以下是我的想法:

const express=require('express');
常量app=express();
const expressWs=require('express-ws')(应用程序);
常量ws=expressWs.getWss('/ws');
函数sendAll(数据){
forEach(每个函数(客户端){
send(JSON.stringify(data));
});
}
setInterval(异步()=>{
试一试{
let message={message:'dataUpdated',data:{foo:'bar};
sendAll(消息);
}捕捉(错误){
控制台错误(err);
}
}, 1000 * 5);
应用程序使用(快速静态('./静态/');
//告诉应用程序解析HTTP正文消息
use(bodyParser.json());
//路线
const-apirouts=require('./api/routes/api-routes');
应用程序使用('/api',apiRoutes);
module.exports=app;

我可以使用
sendAll
功能来广播数据。但是我希望能够在apirouts中使用这个函数,在这里我处理来自传感器的传入请求。我如何将它传递到那里,或者访问
expressWs
实例,并在包含的
api路由
文件中创建相同的函数?

解决方案非常简单=)

const express=require('express');
常量app=express();
const expressWs=require('express-ws')(应用程序);
常量ws=expressWs.getWss('/ws');
导出功能wsBroadcast(数据){
forEach(每个函数(客户端){
send(JSON.stringify(data));
});
}
应用程序使用(快速静态('./静态/');
//告诉应用程序解析HTTP正文消息
use(bodyParser.json());
//路线
const-apirouts=require('./api/routes/api-routes');
应用程序使用('/api',apiRoutes);
module.exports=app;
然后只需将其导入广播消息所需的文件中:

从“express”导入express;
从“../server”导入{wsBroadcast};
const router=express.router();
路由器.post('/data',(req,res)=>{
wsBroadcast({message:'gotData',data:req.body});
...

好的,这是一个愚蠢的问题=)我刚刚导出了sendAll函数,并将其导入到我想要使用它的另一个文件中