Android(也包括iPhone)中的Google Chrome在一段时间(在20seg-3分钟之间)之间振荡(取决于设备)后,将终止websocket连接。
当应用程序不在前台时,它也无法处理简单的计时器或间隔,例如我在底部附加的示例。
我不明白这是正常的,以更新电池寿命并保留移动设备的资源,但这很糟糕……对于任何Web开发人员来说,当用户需要一直连接到套接字而不丢失连接时,这确实是一个痛苦。只需打开whatsapp来回答消息或其他浏览器选项卡上的某些内容,然后返回到webapp并断开连接即可。例如,一个聊天室。
有解决此问题的方法吗?可以直接从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>
最佳答案
老实说,我对websocket不太了解,但是我遇到的一个常见问题是,有时当一两个以上的人尝试连接到同一套接字时,它会吓跑。这可能是您的问题吗?对不起,如果我帮不上什么忙。我制作了一些托管流的python程序,并在同时连接两个后将其关闭。也许像聊天应用程序一样托管多个websocket?
关于javascript - Chrome/Android杀死了后台运行的websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55582103/