2016-09-06 3 views
0

나는 간단한 websocket 서버/클라이언트를 작성했다. 서버는 C# (System.Net.WebSockes)을 사용하여 작성되었으며 클라이언트는 javadript 입니다 (서버 기술은 관련이 없지만 signalr을 테스트했으며 websocket 전송의 핸드 셰이크 중 동일한 오류가 발생했기 때문에). 문제는 다음과 같습니다.웹 소켓을 사용할 때의 이상한 행동

일부 클라이언트에서는 서버에 쉽게 연결할 수 있으며 잘 작동합니다. 나는 그것이 서버에 연결할 수 등 PSiphon 같은 프록시 응용 프로그램을 켤 때

2

는 다른 클라이언트에서 나는 악수를 동안 이러한 클라이언트에 오류 코드 1006를 얻을. 그러나 약 6 초 후에 연결이 끊깁니다.

나는 정말로 혼란스럽고, 마침내 몇 시간을 노력한 후에 여기에 질문을하기로 결정했다. 코드와 관련이 있다고 생각지 않지만 어쨌든 여기에 넣습니다.

var url = 'ws://' + location.host + '/socket'; 
    var socket = new WebSocket(url); 

업데이트 1 : 내가 연락 한 시스템 관리자 (호스팅 회사) 그리고 그들은이 때문에 고객의 ISP 될 수있다. 그 경우에 문제가 발생하는 프록시 서버가 있는지 확인하는 팁을 주시면 감사하겠습니다.

업데이트 2 : @vtortola는 자체 서명 인증서를 만들고 웹 사이트 (IIS 및 Plesk)에 추가했습니다. 일부 개선하지만 여전히 점점 단선 사전에

감사합니다 ..

+2

[여기] (https://en.wikipedia.org/wiki/Capitalization) 참조 "유선"또는 "이상한", btw 되었습니까? – TaW

+0

은 모두 테스트 클라이언트가 로컬 호스트에 있습니까? –

+0

나는 누군가가 당신이 주어진 정보에 기초하여 유용한 것을 말할 수 있다고 생각하지 않는다. "일부 고객의 경우"는 실제로 도움이되지 않습니다. 아무도 "일부 고객"의 차이점을 파악할 수 없습니다. – jAndy

답변

1

그것은 나에게 프록시 문제 냄새가 있었다. 보안 연결 (wss://)을 사용하고 더 나은지 확인하십시오. 기본적으로 클라이언트 중 일부가 프록시를 사용하지 않는 경우 WebSocket 연결이 예기치 않은 방식으로 잘못 수행 될 수 있습니다.

How HTML5 Web Sockets Interact With Proxy Servers.

+0

자체 서명 인증서를 만들고 웹 사이트에 설치했는데, 이제는 핸드 셰이크를 전달하고 연결했지만 약 2 초 후에 즉시 연결이 끊어졌습니다. – SHM

+1

그들 중 소수만이 발생한다면, 프록시 연결을 죽이는 일종의 연결 일 수도 있습니다. 아직 평소보다 오래 지속되는 HTTP 연결은 일종의 오작동이라고 생각하는 기기가 여전히 야생에 있습니다. 프록시는 어쩌면 당신의 ISP 네트워크가 아닌 클라이언트에있을 수 있습니다. – vtortola

+0

감사합니다, 거기에 몇 가지 방법 websocket 패킷을 추적하고 경로에있는 서버가 문제를 찾고있는 방법입니다. 예를 들어 "tracert"명령을 사용하여 중간에있는 모든 서버를 찾은 다음 개별 서버에 핑 (websocket 사용)하여 문제가 발생하는지 확인합니다. – SHM