我正在使用Socket.io在手机和网页之间进行一些通信,而且我遇到了服务器不断丢弃连接的问题。我已经看到很多其他人发布关于Socket.io的信息,他们的连接在闲置大约5分钟左右之后会丢失,但这是一个连续不断地来回发送信息的连接,而且是最长的我&# 39;已经能够保持连接大约30秒。
我正在运行的服务器端代码是:
.hallotoolbar .halloformat .ui-button-text .icon-hallohtml:before {
content:'H';
}
客户端是非常基本的发射事件。这是一个例子:
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');
});
一切开始后,一切似乎都运行良好,直到5-30秒,然后连接才会下降。连接通常会再次启动,但是在5-10秒后。有没有人有类似的问题发生?这可能是服务器而不是代码的问题吗?我以前在使用Socket.io的不同服务器上做过类似的事情,并且没有这种连接问题。任何帮助或指示将不胜感激。谢谢!
答案 0 :(得分:0)
我和另一个名为ws
的库有同样的问题,我试图通过删除从客户端阵列发送断开连接请求的特定客户端来正确处理断开连接方法。我不知道怎么做,但它解决了我的问题。
clients = []
io.on('connection', function(socket){
clients.push(socket);
// above methods
socket.on('disconnect', function(){
console.log("disconnected");
deleteFromArray(clients, socket.id);
});
});
function deleteFromArray(arr, element) {
position = arr.indexOf(element);
arr.splice(position, 1);
}