我们需要将本机应用程序与 Web 应用程序进行通信。
我们认为使用信号器来发送消息/命令。
管道将是:
- 用户单击以执行操作。
- Javascript(带有信号器)向天蓝色的服务器发送消息。
- 服务器将消息重新发送给特定的客户端。它必须是安装在同一台机器上的客户端。
- 结果完成后,NET 将返回结果。
问题是,如何在信号服务器的同一台机器上找到客户端?
我们系统中的组织是:
- 有中心/健身房。
- 每个中心都有可以登录的工作人员。
我们可以通过一些文件配置来识别同一中心的客户。例如,保存我们的密钥中心。但是,在一个中心,是否可以在不同的计算机上安装多个.NET 客户端。
我们认为使用计算机的私有 IP 在信号服务器上制作密钥。
var ips = [];
var RTCPeerConnection = window.RTCPeerConnection ||
window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
var pc = new RTCPeerConnection({
// Don't specify any stun/turn servers, otherwise you will
// also find your public IP addresses.
iceServers: []
});
// Add a media line, this is needed to activate candidate gathering.
pc.createDataChannel('');
// onicecandidate is triggered whenever a candidate has been found.
pc.onicecandidate = function (e) {
if (!e.candidate) { // Candidate gathering completed.
pc.close();
console.log(ips);
return;
}
var ip = /^candidate:.+ (\S+) \d+ typ/.exec(e.candidate.candidate)[1];
ips.push(ip);
};
pc.createOffer(function (sdp) {
pc.setLocalDescription(sdp);
}, function onerror() { });
可以在 .NET 客户端中毫无问题地获取此数据。但是在 javascript 中,之前的代码可以正常工作。在某些 PC 中,它只返回 ipv4。在 Mozilla 中它不起作用。
我们如何识别这两个客户?你知道达到目标的另一种方法吗?
谢谢,