2011-04-26 214 views
4

當前我嘗試爲我們的數據庫周圍的新活動創建推送服務器實例。當然,你會發現很多關於這個話題的信息。node.js WebSocket服務器

我使用: 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) 

我不知道這個問題。

感謝您的幫助。

迎接!

回答

6

您試圖使用Socket.io直接連接到WebSocket服務器。 如果您只運行WebSocket服務器而不運行Socket.io服務器,則可以使用普通的HTML5 API連接到websockets。

例如:

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

您使用的是什麼瀏覽器? WebSockets目前僅受Google 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不僅可以使用websockets(即使在你的錯誤中使用xhr-poliing