2012-10-10 3 views
0

오로라 17, 크롬 22, 파이어 폭스 16을 사용 중이며 간단한 채팅 앱을 만들려고합니다. 노드 0.8.9를 사용하고 있습니다.Firefox Nodejs Websocket

파이어 폭스가 오류

Firefox can't establish a connection to the server at ws://localhost/. 

나는 또한 포트를 시도하고는 동일한 메시지 여기

Firefox can't establish a connection to the server at ws://localhost:4444/. 

이에게주는 연결할 수 없다는 오류가되어 내 코드입니다 :

서버 코드 :

var http = require('http'); 
var net = require('net'); 

function onRequest(req, res) { 
    // Does enough to render a page and javascript 
} 
http.createServer(onRequest).listen(4444); 

var socket = new net.Socket(); 
socket.connect(4444, "localhost", function(){ 
    console.log("Socket Connected"); 
}); 

socket.on("message", function(message){ 
    console.log(message); 
}); 

클라이언트 코드 :

var WebSocket = window.WebSocket || window.MozWebSocket; 

var connection = new WebSocket('ws://localhost:4444'); 

connection.onopen = function() { 
    // Never runs 
    alert("This never runs :(") 
} 

connection.onerror = function(error) { 
    // Always runs here 
    console.log(error) 
} 

나는 소켓 서버의 로그 문에서 연결하지만 파이어 폭스가 소켓에 연결할 수있는 출력을 얻을.

Chrome에서는 오류가 없지만 "onopen"은 절대로 실행되지 않습니다. connection.send ("message")를 사용하면 서버에 아무것도 보내지 않고 false를 반환합니다.

답변

3

서버 코드에 일반 TCP 클라이언트 소켓을 만들고이를 HTTP 서버에 연결합니다. 브라우저가 연결할 수있는 WebSocket 서버를 만드는 것과 똑같은 것은 아닙니다. 목적에 맞게 설계된 라이브러리를 사용하십시오 (socket.io는 브라우저가 WebSocket을 지원하지 않을 때 대체 전송으로 되돌아 갈 수 있기 때문에 매우 일반적으로 사용됩니다).

+1

그러나 Chrome이 작동하지 않는 이유는 무엇입니까 (오류 메시지는 표시되지 않지만 보낼 수 없음). 웹 소켓 (Firefox도 마찬가지입니다)을 지원한다고 가정합니다. Firefox는 웹 소켓을 가지고 있지만 연결할 수 없으며 Chrome에는 웹 소켓이 있지만 아무 것도 보내지 않았습니다. – user654628

+0

브라우저는 WebSocket 서버로 간주되는 것으로 연결하려고 할 때 동작 방식이 다를 수 있지만 실제로는 다릅니다. 구현 의존적입니다. 예를 들어 모든 브라우저에 잘못된 HTML을 렌더링하는 고유 한 방식이있을 때와 같습니다. 구현에 따른 오류 복구는 동일한 브라우저 버전간에 다를 수 있습니다. – ebohlman

+0

나는 그것을 알지 못했다. 소켓을 사용할 수없는 것 같아요. 왜냐하면 내가 사용하고있는 호스팅 (appfog)이 소켓을 지원하지 않는다는 것을 알았 기 때문입니다. 이전 REST API 서비스를 가져오고 게시하는 것으로 돌아가 보겠습니다. 당신의 도움을 주셔서 감사합니다. – user654628

관련 문제