我正在嘗試在可與遠程socket.io服務器進行通信的Raspberry Pi上構建node.js應用程序。爲什麼我的socket.io應用程序在Raspberry Pi上運行時立即斷開連接?
當建立新連接並關閉現有連接時,socket.io服務器很簡單地寫入控制檯。
在瀏覽器中運行時,socket.io客戶端按預期工作。
但是,當我從Raspberry Pi運行客戶端代碼時,它會連接並立即終止。這不允許我執行任何功能,例如發射或接收。
on connect事件永遠不會被觸發。
var io = require('/usr/local/lib/node_modules/socket.io-client');
var serverUrl = 'http://remoteserver.com';
console.log('Connecting to ' + serverUrl);
var socket = io.connect(serverUrl);
socket.on('connect', function(socket) {
console.log('Connection established!');
console.log(socket.id);
socket.on('disconnect', function() {
console.log('Disconnected from server');
});
});
上面會輸出代碼:
Connecting to: http://remoteserver.com
在服務器端,輸出端會顯示一個新的連接,並最終報收超時。
爲什麼客戶端連接事件不會觸發?我如何堅持這種連接,以便我最終可以將輸入發送到服務器?從您的代碼
socket.close();
:
因爲您正在立即關閉連接。 –
你應該添加一些錯誤處理:https://github.com/socketio/socket.io-client/blob/master/docs/API.md#event-connect_error服務器是否實現某種認證(基於會話cookie或者其他的東西)? – robertklep
確保您沒有在代理或積極的應用程序防火牆後面建立連接,因爲這可能會導致您描述的問題。初始連接將成功,但其餘的套接字流量永遠無法恢復,並且您的客戶端最終會超時並關閉。 – Chris