원시 응용 프로그램과 웹 응용 프로그램을 통신해야합니다.Signalr 브라우저에서 동일한 컴퓨터의 .net 클라이언트로 메시지 보내기
메시지/명령을 보내려면 signalr을 사용하는 것이 좋습니다.
파이프 라인은 다음과 같습니다
- 사용자는 작업을하기 위해 클릭합니다.
- Javascript (signalr 포함)는 하늘에있는 서버로 메시지를 보냅니다.
- 서버가 특정 클라이언트에 메시지를 다시 보냅니다. 동일한 시스템에 설치된 클라이언트 여야합니다.
- 결과가 완료되면 NET은 결과로 반전을 보냅니다.
문제는, 신호기 서버의 동일한 기계에서 클라이언트를 어떻게 찾을 수 있습니까?
우리의 시스템의 조직은 다음과 같습니다
- 센터/체육관이 있습니다.
- 모든 센터에는 로그인 할 수있는 직원이 있습니다.
일부 파일 구성을 사용하여 같은 센터에서 클라이언트를 식별 할 수 있습니다. 예를 들어 키 센터를 저장합니다. 그러나 한 대의 센터에 여러 컴퓨터에 하나 이상의 .NET 클라이언트가 설치되어있을 수 있습니다.
우리는 컴퓨터의 개인 IP를 사용하여 signalr 서버에서 키를 만드는 것으로 생각합니다.
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 만 반환합니다. 그리고 모질라에서는 작동하지 않습니다.
두 클라이언트를 어떻게 식별 할 수 있습니까? 목표에 도달하는 또 다른 방법을 알고 있습니까?
감사합니다.
어쩌면 또 다른 옵션이 될 것이다 사용 [URI 방식 (https://blogs.msdn.microsoft.com/noahc/2006/10/19/register-a-custom-url- 프로토콜 처리기 /) 우리의 애플 리케이션을 시작하고, 그 결과는 signalr에 의해 보내십시오. –