2012-11-04 87 views
0

我是node.js和socket.io的新手,嘗試用http://socket.io/#how-to-use的示例將服務器連接到客戶端。 (無本地主機)Node.js + socket.io:服務器上的應用程序無法正常工作

服務器:

var app = require('http').createServer(handler) 
    , io = require('socket.io').listen(app) 
    , fs = require('fs') 

app.listen(80); 

function handler (req, res) { 
    fs.readFile(__dirname + '/index.html', 
    function (err, data) { 
    if (err) { 
     res.writeHead(500); 
     return res.end('Error loading index.html'+err); 
    } 

    res.writeHead(200); 
    res.end(data); 
    }); 
} 

io.sockets.on('connection', function (socket) { 
    socket.on('message', function(msg){ 
     console.log('Got text: '+msg); 
     socket.broadcast.send(msg); 
    }); 
    socket.on('disconnect', function() { }); 
}); 

客戶:

<html><head><script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect(); 
    socket.on('connect', function() { 
    alert('connected.'); 

    socket.on('message', function (msg) { 
     // my msg 
     alert('message received: '+msg); 
    }); 
    socket.send('hi'); 

    }); 


</script> 
</head><body>This is the content :)</body> 
</html> 

谷歌瀏覽器將顯示在控制檯:

Unexpected response code: 502 

此外,收到的每封郵件後,Chrome瀏覽器添加

GET http://[myServer]/socket.io/1/?t=1352313105809 socket.io.js:1659 
Socket.handshake socket.io.js:1659 
Socket.connect socket.io.js:1699 
maybeReconnect 

到控制檯。 Wheres問題?

回答

3

來自操作方法頁面的示例都使用端口80,這對服務網站來說很常見。

但是,您在示例中使用了端口8080。

如果它甚至加載了socket.io腳本,請檢查您的Web瀏覽器的控制檯。 您可能需要提供http://localhost:8080/socket.io/socket.io.js作爲明確的網址,並用io.connect('http://localhost:8080');

連接如果上述方法無效,請分享在哪個端口上一些有識之士您的Web服務器上運行。


沒有代碼在你的(更新)爲例,實際處理任何傳入郵件服務器端。

`socket.on('message', function(msg){ 
    console.log('Got text: '+msg); 
    socket.send(msg); 
}); 

應該至少將消息發送回客戶端 - 您的警報只有在客戶端收到消息時纔會觸發。 node.js控制檯是否輸出任何傳入或發送的消息?連接時,我的node.js控制檯的幾行看起來如下所示。

debug - client authorized 
info - handshake authorized ... 
debug - setting request GET /socket.io/1/... 
debug - set heartbeat interval for client ... 
debug - client authorized for 
debug - websocket writing 1:: 
debug - sending data ack packet 
+0

謝謝。我編輯了代碼並確實連接了,因此我認爲腳本(socket.io.js)已加載。但沒有收到任何消息。 你有什麼建議我可以測試消息是否實際發送? – xoxox

+0

@xoxox我更新了我的回覆。 – mabako

+0

謝謝,它最終收到自己的消息,但不是其他消息(當我連接不同的瀏覽器時)。 Opera不會將任何東西打印到控制檯中;谷歌瀏覽器打印「意外的響應代碼:502」,但它仍然有效。 (我編輯了我的問題並添加了一些信息) – xoxox

相關問題