【发布时间】:2019-04-05 18:18:30
【问题描述】:
我一直在网上搜索我在 3g/4g 网络上使用 socketio 客户端时遇到的问题。好像可以连接,但连接不长,保持连接约60秒然后断开,当重连尝试事件触发时再次连接,但重复上述行为。
有谁知道为什么会发生这种情况或如何解决?
提前致谢!
这是我用来启动 de socket 的代码示例:
var socketOpts = {
reconnect: true,
reconnectionDelayMax : 2500,
timeout : 10000,
transport: ['polling','websocket']
};
socket = io.connect( $scope.socket_addr, socketOpts );
showMessage( true, "Aguardando conexão com o servidor!", true );
/* Abaixo estão os eventos que o Socket pode disparar durante o funcionamento do app */
/* Quando o Socket conectar no servidor */
socket.on("connect", function()
{
$scope.socket_connected = true;
/* Agora que o socket já conectou, posso alterar o tempo de ping */
socket.io.engine.pingInterval = 3000;
socket.io.engine.pingTimeout = 5000;
showMessage( false, "", false );
console.log( "WS conectado" );
});
【问题讨论】:
-
这就是移动连接的工作原理以及使用“偶尔连接”一词的原因。你总是会失去连接,因为你进入了电梯,一个盲区即使在城市,你的手机有断线问题,或者你搬到了房子的另一边。 不要尝试保持连接打开
-
感谢您的回复,但此代码属于 Cordova 应用程序,通常用于街道开阔的天空。它应该连接更多时间,不是吗?我的意思是,websocket 应该完全可以保持连接打开,还是我错了?
-
@Fernando Rebêllo 我也注意到了同样的行为。每分钟都连接一个新的 socket.id。你找到解决方案了吗?它在 wifi 上运行良好……不是 LTE、4g……
-
@InêsGomes,我注意到套接字曾经关闭,因为当用户锁定屏幕时,操作系统正在休眠应用程序,所以我添加了一个 backgroundMode 插件以避免应用程序休眠,它消耗更多电池,但这对我来说不是问题。我还减少了到服务器的 ping 间隔,因此意识到连接消失并打开一个新连接需要更少的时间。希望对您有所帮助!
-
谢谢@Fernando Rebêllo。 :-) 我想我会尝试增加超时时间
标签: websocket socket.io intermittent 3g-network