Websocket Socket.IO客户端没有';t在3g/4g连接上不能正常工作

Websocket Socket.IO客户端没有';t在3g/4g连接上不能正常工作,websocket,socket.io,intermittent,3g-network,Websocket,Socket.io,Intermittent,3g Network,我一直在网上搜索我在3g/4g网络上使用socketio客户端时遇到的问题。它似乎已连接,但未保持连接很长时间,它保持连接约60秒,然后断开连接,在重新连接尝试事件触发时再次连接,但重新触发上述行为 有人知道为什么会发生这种情况或如何解决吗 提前谢谢 下面是我用来启动反套接字的代码示例: var socketOpts = { reconnect: true, reconnectionDelayMax

我一直在网上搜索我在3g/4g网络上使用socketio客户端时遇到的问题。它似乎已连接,但未保持连接很长时间,它保持连接约60秒,然后断开连接,在重新连接尝试事件触发时再次连接,但重新触发上述行为

有人知道为什么会发生这种情况或如何解决吗

提前谢谢

下面是我用来启动反套接字的代码示例:

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" );
    });

设置这些选项以延迟重新连接成功:-)

或者在爱奥尼亚

socketConf: {
    url: 'http://your.Server.url',
    options: { reconnection: true, reconnectionDelay: 3000, timeout: 60000 }
  }

这就是移动连接的工作原理以及为什么使用“偶尔连接”这个术语。你总是会失去连接,因为你进入了电梯,甚至是城市的死区,你的手机出现了断开连接的问题,或者你搬到了房子的另一边。不要试图保持连接打开谢谢你的回复,但这段代码属于Cordova应用程序,它通常在街道的开阔天空中使用。它应该连接更多的时间,不是吗?“我的意思是,websocket的工作应该完全是为了保持连接打开,还是我错了?”费尔南多·雷贝罗我也注意到了同样的行为。每分钟连接一个新的socket.id。你找到解决办法了吗?它在wifi上工作得很好。。。不是LTE,4g…@InêsGomes,我注意到插座曾经关闭,因为当用户锁定屏幕时,操作系统正在休眠应用程序,所以我添加了一个backgroundMode插件以避免应用程序休眠,它会消耗更多电池,但这对我来说不是问题。我还缩短了到服务器的ping间隔,因此意识到连接已断开并打开新连接所需的时间更少。希望有帮助!Thanks@Fernando雷贝罗::-)我想我会尝试增加outHi@InêsGomes的时间,谢谢你回答这些问题,虽然我的问题是Android睡眠状态导致连接中断,但其他用户可能会因此而出现这些问题。再次感谢您分享您的解决方案!!Hi@FernandoRebèllo什么backgroundMode插件对你有用?Hi@InèsGomes,我使用了katzer backgroundMode插件,但是请记住,这个插件只适用于Android,实际上,它也适用于iOS,但苹果出于某些技术原因拒绝发布。希望有帮助!谢谢你@FernandoRebèllo我对这个插件有很多问题。但通过这种方式和唤醒锁解决了这个问题
socketConf: {
    url: 'http://your.Server.url',
    options: { reconnection: true, reconnectionDelay: 3000, timeout: 60000 }
  }