2011-04-26 6 views
4

현재 데이터베이스 주변에 새로운 활동을위한 푸시 서버 인스턴스를 만들려고합니다. 물론이 주제에 대한 많은 정보를 찾을 수 있습니다.node.js WebSocket Server

내가 사용하고 다음 클라이언트 구현으로 http://static.brandedcode.com/nws-docs/#s6-p1

:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

     <script src="http://cdn.socket.io/stable/socket.io.js"></script> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 

     <title></title> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      (function() { 
       var webSocket = new io.Socket('ws//test', { 
        port: 8080 
       }); 

       webSocket.connect(); 

       webSocket.on('connect',function() { 
        console.log('Client has connected to the server!'); 
       }); 

       webSocket.on('message',function(data) { 
        console.log('Received a message from the server!',data); 
       }); 

       webSocket.on('disconnect',function() { 
        console.log('The client has disconnected!'); 
       }); 

       window.ws = webSocket; 
      }()); 
     </script> 
    </body> 
</html> 

콘솔 반환 :

Unexpected response code: 404 
XMLHttpRequest cannot load http://ws//test:8080/socket.io/xhr-polling//1303822796984. Origin http://test is not allowed by Access-Control-Allow-Origin. 
1303822796984GET http://ws//test:8080/socket.io/xhr-polling//1303822796984 undefined (undefined) 

내가 문제를 모르겠어요.

도움 주셔서 감사합니다.

Greets!

답변

6

Socket.io를 사용하여 WebSocket 서버에 직접 연결하려고합니다. Socket.io 서버가 아닌 WebSocket 서버 만 실행하는 경우 일반적인 HTML5 API를 사용하여 WebSocket에 연결할 수 있습니다. 예를 들어

:

var ws = new WebSocket("ws://domain:port"); 
ws.onopen = function(){} 
ws.onmessage = function(m){} 
ws.onclose = function(){} 

당신이 사용하는 어떤 브라우저? 웹 소켓은 현재 Chrome에서만 지원됩니다. 다른 브라우저의 테스트는 실패합니다.

1

아마도 'ws//push.xxx.binder.test' (콜론 없음) 대신 'ws://push.xxx.binder.test'을 원했을 것입니다.

0

변화

var webSocket = new io.Socket('ws//push.xxx.binder.test', { 

var webSocket = new io.Socket('push.xxx.binder.test', { 

당신에게 socket.io에 대한 귀하의 도메인에 접두사를 추가 할 필요가 없습니다에 (특히 슬래시 전에 결장없이). 또한 은 좋은 이름이 아닙니다. - socket.io는 을 사용할 수있을뿐만 아니라 (실수로도 xhr-poliing을 사용합니다)