setTimeout是不可靠的Chrome在安卓当焦点-任何解决方案?



我有一个web应用程序,基本上可以看作是一个消息传递系统-人们可以提交消息,其他人可以接收它。这一切都是通过AJAX实现的,Javascript前端与PHP后端交互。所有这些工作完全正常,没有任何问题。

我还实现了通知系统,当收到新消息时,向桌面或android应用程序发送推送通知。

通知系统使用setTimeout定期检查PHP AJAX系统。但这正是交易破裂问题出现的地方。

当不关注Android时,settimeout变得完全不可靠-有时它会工作,有时它根本不会工作,有时很晚。

为了解决这个问题,我把所有的东西都转移到一个支持工作者,因为我认为这将独立于浏览器被关注,但这是更糟糕的-似乎它甚至比仅仅在浏览器上运行settimeout更不一致。

那么有什么方法可以纠正这种情况吗?是否有一些特殊的指令在支持工作者中,我可以让它不睡觉?

谢谢。

这个API不能保证计时器完全按照计划运行。由于CPU负载,其他任务等导致的延迟是可以预料的,这可能导致实际延迟可能比预期的要长。

你可以在MDN上阅读更多关于setTimeout延迟和它可能延迟更长时间的原因。

如果您需要像即时消息传递这样的功能,您应该研究用于此类功能的体系结构和协议。像带事件的WebSockets这样的东西更适合这个用例。

相关内容

最新更新