路由到Angular gui"/>
NodeJS WebSockets通过NodeJS将消息从设备路由到Angular gui
我已经创建了一个实现套接字管理器的NodeJS应用程序,如下所示:
import { Server } from "ws";
import clientObj from "../objects/clientObj";
import serverObj from "../objects/serverObj";
class socketMgr {
serverA = undefined;
serverB = undefined;
confA = undefined;
confB = undefined;
init(cA, cB) {
this.confA = cA;
this.confB = cB;
}
serve()
{
// server between devices and nodejs
if (this.confA.host && this.confA.port)
{
this.serverA = new Server({ host: this.confA.host, port: this.confA.port });
this.serverA.on("connection", connection => new clientObj(this.confA, conn));
}
// server between nodejs and gui
if (this.confB.host && this.confB.port)
{
this.serverB = new Server({ host: this.confB.host, port: this.confB.port });
this.serverB.on("connection", conn => new serverObj(this.confB, conn));
}
return true;
}
}
export default socketMgr;
此管理器声明并初始化两个发送和接收消息的套接字服务器。整个流程是这样的(简化为1对1的方法):
device <==> NodeJS client/server <==> gui client
- 设备连接到NodeJS并在serverA上创建一个客户端(实现事件监听器)
- serverA上的客户端回复设备的握手请求
- 握手成功后,设备开始定期向NodeJS(服务器A上的客户端)发送消息]
- NodeJS客户端处理消息并将某些状态保存到数据库(sql),而不是整个消息,因为这绝对是过大的杀伤力。
TODO:
这是Web套接字serverB到位的有趣部分。我真的不知道这是否是正确的方法,但是我想使用ServerB实例重新路由/广播到gui。许多设备(数百甚至数千个)最终将发送此类消息,并且许多用户可以从gui端观看这些消息(监视)。
在没有serverB实例的情况下,能否将路由重新路由/广播到gui?
如何在NodeJS中实现这种类型的消息重新路由/广播?如果我可以提供任何其他信息。关于这个问题,请让我知道。
感谢您对此进行调查。
最好的问候。
我已经创建了一个实现套接字管理器的NodeJS应用程序,如下所示:从“ ws”导入{Server};从“ ../objects/clientObj”导入clientObj;从“ ../objects/serverObj”导入serverObj; ...
回答如下:您无需为此创建两个服务器。设备和GUI都是客户端。当设备将数据发送到服务器时,您可以通过允许GUI客户端通过主题名称或设备ID订阅设备消息来将此数据发送到GUI。
更多推荐
NodeJS WebSockets通过NodeJS将消息从设备路由到Angular gui
发布评论