2011-07-09 130 views
7

我有一個node.js服務器啓動並運行express,我試圖建立一個使用socket.io服務器端和Chrome 12客戶端的websocket連接。當我嘗試連接時,socket.io輸出一條調試消息,說「銷燬nonsocket.io升級」,並且我的連接處理程序中的代碼無法運行。同樣在客戶端,我的套接字的readyState是2(CLOSING)。websocket問題:無法連接到node.js服務器

[編輯] 從0變爲2

+0

您是否使用客戶端上的socket.io.js連接到服務器? – pkyeck

+0

你可以把你的代碼片段(或鏈接到github)嗎? –

+0

您使用的是什麼版本的Node.js和socket.io? – apose

回答

1

插座的readyState確保您插入socket.io.js文件到您的客戶端代碼和使用它。如果您嘗試在客戶端創建自己的websocket,您可能會遇到問題。

做這樣的事情爲您的服務器:

var app = require('express').createServer() 
    , io = require('socket.io').listen(app); 

app.listen(80); 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

,並像這樣爲你服務的HTML文件:

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 

確保您從您的網絡服務器目錄服務/socket.io/socket.io.js 。然後,只需進入該頁面,即可從選項或Firebug中觀看控制檯登錄到Web瀏覽器的開發環境。

+0

當我嘗試將socket.io.js添加到客戶端時,出現客戶端無法找到「要求」的錯誤。我查看了socket.io.js代碼,它使用require,我認爲它只是一個服務器端(即節點)的東西,而不是支持瀏覽器的JavaScript。我們需要在實現客戶端「需求」的客戶端中包含另一個庫嗎?或者我錯過了什麼? – Elisabeth

+0

@伊麗莎白你應該把它變成一個新的問題。您不會在客戶端使用require()。在客戶端中,您將使用

相關問題