2010-06-27 8 views
1

포트 8000, localhost에서 수신 대기하는 노드를 사용하여 서버를 만들었습니다. 제대로 작동하는지 확인했지만 클라이언트 (Chrome 5)의 WebSocket에 액세스 할 수 없습니다. 다양한 Git repos, node + websocket, socketIO, articles 등에서 여러 구현을 시도했습니다.Node.js, WebSocket 위치 문제?

포트 충돌 없음 (sudo lsof -i tcp); 시도한 server.listen (8000, "*"); ws = new WebSocket ("ws : // : 8000/test")을 가리키며; 데비안 레니, Apache22 노드 v0.1.98-31-g1c6671a

URL 재 작성과 충돌이있을 것으로 생각됩니다. 또는 가능한 사용 권한. 어떤 아이디어?

답변

0

우분투 10.04 LTS 32 비트 및 Chrome 5.0.375.125에서 비슷한 문제가 있었으며 Chrome의 버그라는 것을 알았습니다. 다음은 문제를 테스트하고 해결할 수있는 방법입니다. WebSocket을 PHP 및 이후 Node.JS로 사용했습니다.

PHP : http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/에서 자습서 파일을 다운로드하고 웹 루트의 'socket'폴더에서 추출하십시오. 이 폴더에는 이제 readme.txt와 'server'및 'client'폴더가 있습니다. 이제 readme에 따라 콘솔에서 스크립트를 시작하십시오. (저에게 command : sudo php -q /var/www/socket/server/startDaemon.php). 그것은 '소켓에서 듣기 시작'을 인쇄해야합니다. . 콘솔 창을 열어 둡니다. 이제 Chrome의 localhost/socket/client/client.php로 이동하십시오. 'Socket Status 0'이라고 말하고 콘솔을 보면 새로운 메시지가 표시되지 않습니다 (연결되지 않았습니다).

이제 트릭이 나옵니다. 두 번째 Chrome 탭을 엽니 다. 이 탭을 동일한 url : localhost/socket/client/client.php ('Socket Status 0'이라고도 함)로 지정하십시오. 그런 다음 다시 닫으십시오. 원래 탭에 '소켓 상태 : 1 (열림)'이라고 표시되고 콘솔에서 핸드 셰이크가 발생했습니다. 이제 WebSocket이 작동합니다.

위와 같은 트릭이 반복되었지만 이번에는 Node.JS와 Socket.IO 스크립트를 사용했습니다. Socket.IO-node (github.com/LearnBoost/Socket.IO-node)에 포함 된 채팅 예제는 '연결 중 ...'단계에서 매달려 동일한 문제가있었습니다. 채팅 상자에 두 번째 탭을 연 다음 다시 닫으면 문제가 해결되고 채팅 상자가 제대로로드됩니다. Node.JS 서버가 콘솔에서 연결을 확인했습니다. 그때부터 WebSocket은 정상적으로 작동했습니다.