2011-11-15 5 views
1

Windows에서 nodejs + socket.io의 최신 버전을 사용하는 간단한 응용 프로그램을 개발 중입니다. 소켓이 클라이언트 측에 생성받을 때 문제가 발생했지만, 콘솔에 다음과 같은 출력 socket.emit 결과는 (구글 크롬을 사용) : 나는 로컬 호스트에서 테스트하고 있기 때문에 매우 이상하다socket.io 클라이언트 'emit'이 크롬 콘솔의 이상한 오류를 표시합니다.

GET http://0.0.34.184:8888/socket.io/1/?t=1321385855665&jsonp=0 

: 8888이므로 적어도 127.0.0.1이어야하며 0.0.34.184가 아니어야합니다.

<script type="text/javascript" src="socket.io/socket.io.js"></script> 

을 그럼 난 다음 코드를 사용하여 연결 :

socket = io.connect('localhost:8888'); 
socket.on("my_event", receiveNetEvent); 

console.log('LOG: sio init complete, socket=' + socket); 

로그 상태 소켓 = [개체 개체를 다음과 같이 페이지의 socket.io 클라이언트는 태그에 서버에서 요청 ] null 또는 undefined가 아니므로 모든 것이 작동해야합니다.

itseld은 다음 기능을 수행한다 전송 :

function sendRequest(request){ 
    socket.emit('request', request); 
} 

요청 객체 함수에 전달이 형성되고, 이렇게 전달 :

var initRequest = {}; 
initRequest.subject = 'weather'; 
initRequest.key = 'initial'; 

sendRequest(initRequest); 

하고 유효한 JSON 객체 인 다시 console.log()에 따르면.

이 모든 일로 인해 일어날 수있는 모든 이유에 대해 전혀 알지 못합니다.

+0

나는 그것을 믿을 수 없다. 나는 버그를 잡으려고 거의 하루를 보냈다! 그리고 'localhost : 8888'주소 앞에 'http : //'부분을 넣지 않았 음이 밝혀졌습니다 !!! 그래서 거기에 나타나는 0은 엉망진창에서 나온 것입니다 ... – noncom

+0

아직도 socket.io가 이것에 대해 무지한 이유가 있습니다. 반면에 novadays가 일반적으로 시행하지 않는 http 일을 잊어 버리는 것은 쉬운 일입니다. 클라이언트 소켓은 http가 아닌 다른 곳에서 열 수 없으므로 적어도 경고를 던질 수 있으며 URL에서 헤더가 누락 되었음이 분명합니다. – noncom

답변

2

연결 경로에 http : //를 추가하십시오. 그게 나를 위해이 오류를 해결했습니다.

+1

감사. 관심있는 사람은 window.location.href를 window.location으로 전환하십시오.출처가 내가 연결했던 URL에 http : //를 추가했습니다 (Chrome 사용). – Aaron

1

나는 동일한 문제에 직면했지만 다른 이유가있었습니다. 내 설정은 포트 9000을 가진 Tomcat 서버에서 소켓 클라이언트를 실행하고 localhost에 연결하고있었습니다 : 80 nodejs를 실행하고 있었는데, 기본적으로 포트가 80인데도 필수 포트였습니다.

그래서 난

io.connect을 포트를 준 교체 ('에 http : // localhost를') io.connect와 ('에 http : // localhost를 : 80')

왜냐하면 두 서버 모두 같은 도메인을 가리키고 있기 때문입니다.이 경우 localhost ... 소켓 io가 포트 9000을 사용하고있었습니다.

누군가에게 도움이되기를 바랍니다.

1

나는 또한 동일한 문제에 직면했지만 xhr-polling 만 서버 측 javascript에 강제 적용하여 해결했습니다.

var io = require('socket.io').listen(8000); 
    io.configure(function() { 
     io.set('transports', ['xhr-polling']); 
    }); 
<..Rest code..>