2011-05-07 50 views
0

我server.js似乎是正確的..的Node.js和網絡插口-JS簡單的客戶端服務器不開放

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, "mysite.com"); 
console.log('Server running at mysite.com:1337/'); 

我的客戶的肉下面。

function init() { 

    // Connect to Web Socket. 
    // Change host/port here to your own Web Socket server. 
    ws = new WebSocket("ws://mysite.com:1337"); 

    // Set event handlers. 
    ws.onopen = function() { 
    output("onopen"); 
    }; 

} 

如果我去http://www.mysite.com:1337我正確地收到Hello World!但是,當我嘗試使用我的客戶端進行連接並在Fire bug中進行調試時,我得到以下輸出。

[WebSocket] connected 
[WebSocket] request header: GET/HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: mysite.com:1337 Origin: http://www.mysite.com Cookie: Sec-WebSocket-Key1: 115 17 p^!x-93 IERc16 7 Sec-WebSocket-Key2: 1 75 7Z i `. 8u $l031 4j9 
[WebSocket] sent key3: ±Ôñ<g 
[WebSocket] closed 

而且在我有機會做任何事情之前WebSocket會自動關閉。任何人都可以談談我收到的錯誤,你認爲我應該怎麼做?

回答

5

您已經創建了一個node.js HTTP服務器,但您試圖以WebSockets服務器的身份連接到它。 WebSockets協議不是普通的套接字,它不是普通的HTTP請求。 WebSockets有一個類似於握手的HTTP,但之後你有一個全雙工連接(像套接字和不同於HTTP),它具有少量的消息幀(與普通套接字不同)。

如果要創建node.js WebSockets服務器,請嘗試使用Socket.IOnode-websocket-server。另一方面,如果你想從Javascript連接到普通的HTTP服務器,然後使用AJAX支持,如jQuery偉大的Javascript庫之一。