0
我使用Socket.io在手機和網頁之間進行一些通信,並且我遇到了服務器不斷丟失連接的問題。我看到很多其他人發佈了關於Socket.io的連接,其中的連接在空閒大約5分鐘左右後下降,但是這是一種連接,具有不斷的信息來回發送,而且我已經能夠保持連接約30秒。使用Socket.io,連接不斷下降
服務器端代碼我跑的是:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
socket.on('create', function (room) {
socket.join(room);
});
socket.on('player-move', function(msg){
roomId = msg['room'];
move = msg['action'];
socket.broadcast.to(roomId).emit('player-move', move);
});
socket.on('disconnect', function() {
console.log('someone has disconnected');
});
});
http.listen(443, function(){
console.log('listening on *:443');
});
的客戶端是非常基本的發出事件。這裏有一個例子:
$("#arrow-left").on("touchstart", function(){
var senddata = { "room": roomId, "action": "d-l" };
socket.emit("player-move", senddata);
});
一切似乎都運行良好,直到一切開始後5-30秒,然後連接剛剛下降。連接通常會再次啓動,但5-10秒後。有沒有人有類似的問題發生?這可能是服務器而不是代碼的問題嗎?我之前在使用Socket.io的不同服務器上做過類似的事情,並沒有遇到這種連接問題。任何幫助或方向進去,將不勝感激。謝謝!
你的服務器的'var'聲明在哪裏? 'roomId =','move ='會在全局範圍內以非嚴格模式定義這些變量,並且會嚴格地以嚴格模式崩潰你的服務器。客戶在哪裏獲得'roomId'?如果它是未定義的,也可能會導致服務器崩潰,因爲你基本上是在告訴服務器運行'socket.broadcast.to(undefined).emit(...);' –
客戶端和服務器之間是否有任何基礎架構可能會計時out socket?你確定你的服務器不斷運行,而不是重新啓動嗎? – jfriend00
你確定他們正在斷開嗎?連接也可能回退到長輪詢,而不是持續連接,這可能由於各種原因而發生,並且可能看起來像沒有連接。 – pay