编辑:我通过网络套接字将数据从应用程序A发送到应用程序B,其中A是其他应用程序的路由器应用程序,B是我的网路应用程式当B收到数据时,它应该将其发送给任何查看其主页的客户端,也通过web套接字。但是,由于roter应用程序和主页客户端连接到同一个web套接字服务器,我不知道哪些连接是查看主页的客户端,以及哪些连接是其他东西,比如我的路由器。只有主页客户端才能接收数据。NodeJS和网络套接字:检查套接字来源是否与网络套接字服务器相同
我基本上想要将从我的路由器收到的日志数据实时传递到我的主页,以便我可以查看它。
========
我有一个明确的应用程序,服务器简单的HTML页面。它运行此脚本:
var host = window.document.location.host.replace(/:.*/, '');
var ws = new WebSocket('ws://' + host + ':5000');
ws.onmessage = function (event) {
console.log(JSON.parse(event.data));
};
在后端的NodeJS,我有一个简单ws服务器上运行,监听连接:
var WebSocketServer = require("ws").Server;
module.exports.init = function(server) {
var wss = new WebSocketServer({ server: server });
wss.on('connection', function (ws) {
...
});
};
我得到,此刻,2个不同地点连接。
- 我运行的一个路由器应用正在发送此Web应用日志消息。
- 此Web应用程序正在提供的HTML页面。
我想从路由器应用程序的数据管道到我的html页面,但要做到这一点,我需要知道我需要哪些连接管道数据。理论上我可以有很多联系,但是至少在现在,只有其中的一个应该在接收后传递数据。
我想我可以将Web套接字连接的起源与Web套接字服务器运行的Web服务器的域进行比较。
我可以得到这样的连接的起源:ws.upgradeReq.headers.origin
。这将返回例如:localhost:5000
。但我不知道我的网络套接字服务器运行的域名。我试图谷歌,它似乎要获得域名,我需要从http请求中获取它。我正在寻找的东西只是给了我名字,而不必等待http请求。
我试过os.hostname()
,但它不会给我我需要的结果。 我也试过server.address()
,其中server
是var server = require("http").createServer(app);
,但是这给了我这个:{ address: '::', family: 'IPv6', port: 5000 }
。
是不是只有一种方法来获得主机和端口?我能以某种方式使用上面的address
部分获取主机名吗?
网络应用程序可能会在Heroku上运行。
我不是在追踪你想要做的事情。我认为你需要备份并描述高层次的问题,而不是你想要追求的解决方案。我得到你有一个nodejs服务器和一个假设服务于网页的路由器。我知道你在那个nodejs进程中有一个webSocketServer,可能是在不同的端口上。我不明白你想要发送什么数据。数据来自哪里,你要把它发送到哪里? – jfriend00
我加了编辑,试图澄清。 – ptf