2012-09-20 4 views
3

socket.io를 사용하면 포트 843은 플래시가 해당 포트를 사용하기 때문에 방화벽과 같은 문제가 가장 적은 것처럼 보입니다.클라이언트가 포트 843을 통해 연결할 수 있는지 확인하는 방법은 무엇입니까?

그러나 많은 네트워크가 포트 843을 차단하므로 전혀 연결할 수 없습니다.

는 그 80843포트에서 그렇게 그와 같은 사람들을 HTTP 트래픽을 리디렉션 할 수 있습니다 설정로드 밸런서를 가지고 있지만, 내 문제는 누군가가 포트 843가 있는지 여부를 테스트하는 방법을 생각할 수 없다는 것입니다이 (가) 차단되었습니다.

아이디어가 있으십니까?

또는 대체 연결 URL을 항상 사용하도록 socket.io의 XHR 메서드를 변경하면 가장 이상적 일 수 있습니다. 나는 연결을 더 지연시키기 때문에 시간 초과가있는 모든 종류의 테스트를하는 것이 더 지쳤다. websocket 연결 시도가 시간 초과 된 후에 뭔가를 변경하는 것이 이상적입니다.

이다 내가 생각하고

..

var socket = io.connect('http://example.com:843', {'connect timeout':5000}); 

socket.on('connect_failed', function(){ 
    // change socket to connect to port 80 
} 

하지만 난 그 시점에 연결 URL을 변경 할 방법을 모르겠어요.

답변

0

테스트하지는 않았지만 소켓 대 포트 80을 다시 초기화하지 않습니까?

var socket = io.connect('http://example.com:843', {'connect timeout':5000}); 

socket.on('connect_failed', function(){ 
    // change socket to connect to port 80 
    socket = io.connect('http://example.com:80', {'connect timeout':5000}); 
} 
+0

정확히 내가 시도한 것입니다. 나는 그것이 실제로 현재 얼마나 효과가 있는지 말할 수 없다. 어떤 사람들은 여전히 ​​문제가 있다고 말하고 있습니다. 또한 어떤 사람들에게는로드 밸런서를 통과하고 XHR 폴링을 수행하기 때문에 포트 80 방식이 많이 차단됩니다. 항상 웹 소켓에 843, xhr에 80을 연결하는 것이 이상적입니다. – sadtaco

+0

@sadtaco 날씨가 작동하는지 여부를 로컬에서 테스트해야합니다. 프로덕션 설정을 가상 박스로 복제 해보십시오 ... 실제로 A 급 소프트웨어를 테스트, 디버그 및 배포 할 수있는 유일한 방법입니다 ... – Frankie

관련 문제