Chrome / Android杀死了后台运行的websocket

时间:2019-04-08 21:35:42

标签: javascript android iphone google-chrome websocket

Android(也包括iPhone)中的Chrome浏览器会在一段时间(在20seg-3分钟之间)之间振荡,这会终止websocket连接,具体取决于设备。 当应用程序不在前台时,它也无法处理简单的计时器或间隔,例如我在底部附加的示例。

我不明白这是正常的,以更新电池寿命并保留移动设备的资源,但这很糟糕……对于任何Web开发人员来说,当用户需要一直连接到插座时,这确实是一个痛苦。只需打开whatsapp来回答消息或其他浏览器选项卡上的某些内容,然后返回到webapp并断开连接,则失去与websocket的连接。例如,聊天室。

此麻烦有解决方法吗?可以直接从chrome配置的内容,对Webapp的特殊权限,针对这种情况的某种绕过方法? 这是一个webapp,已添加到android的开始屏幕中...即使如此,chrome似乎也没有赋予它任何特定的优先级,并且会不断杀死websocket,并在webapp处于后台时拒绝执行JavaScript。 (屏幕关闭或前台有其他应用)

我希望我已经解释清楚了,我是stackoverflow的新手,我的英语不太好。 预先感谢!

例如,您可以在移动浏览器中执行一个简单页面,并看到该间隔不会像预期的10秒那样执行,

<script>
    setInterval(function() {
        var timeNow = new Date().toLocaleTimeString()
        document.body.innerHTML += "<div> " + timeNow + "</div>"    
    }, 10000)
</script>

1 个答案:

答案 0 :(得分:0)

说实话,我对websocket不太了解,但是我遇到的一个普遍问题是,有时当一两个以上的人尝试连接到同一套接字时,它会吓跑。这可能是您的问题吗?对不起,如果我帮不上什么忙。我制作了一些托管流的python程序,并在同时连接两个后将其关闭。也许像聊天应用程序一样托管多个websocket?