我有一個node.js服務器啓動並運行express,我試圖建立一個使用socket.io服務器端和Chrome 12客戶端的websocket連接。當我嘗試連接時,socket.io輸出一條調試消息,說「銷燬nonsocket.io升級」,並且我的連接處理程序中的代碼無法運行。同樣在客戶端,我的套接字的readyState是2(CLOSING)。websocket問題:無法連接到node.js服務器
[編輯] 從0變爲2
我有一個node.js服務器啓動並運行express,我試圖建立一個使用socket.io服務器端和Chrome 12客戶端的websocket連接。當我嘗試連接時,socket.io輸出一條調試消息,說「銷燬nonsocket.io升級」,並且我的連接處理程序中的代碼無法運行。同樣在客戶端,我的套接字的readyState是2(CLOSING)。websocket問題:無法連接到node.js服務器
[編輯] 從0變爲2
插座的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瀏覽器的開發環境。
當我嘗試將socket.io.js添加到客戶端時,出現客戶端無法找到「要求」的錯誤。我查看了socket.io.js代碼,它使用require,我認爲它只是一個服務器端(即節點)的東西,而不是支持瀏覽器的JavaScript。我們需要在實現客戶端「需求」的客戶端中包含另一個庫嗎?或者我錯過了什麼? – Elisabeth
@伊麗莎白你應該把它變成一個新的問題。您不會在客戶端使用require()。在客戶端中,您將使用
您是否使用客戶端上的socket.io.js連接到服務器? – pkyeck
你可以把你的代碼片段(或鏈接到github)嗎? –
您使用的是什麼版本的Node.js和socket.io? – apose