在Mobile Safari中保持WebSocket的活力

Tre*_*Dev 7 javascript mobile-safari websocket ios

屏幕锁定后,是否可以在Mobile-Safari中保持html 5网页WebSocket连接打开?

我想在一天之内向我的用户发送持续更新,他们的屏幕应始终必须解锁以接收这些通知,这似乎很愚蠢.

还有其他选择吗?

Eoi*_*oin 8

我不认为在浏览器处于后台时或者当屏幕被锁定时保持连接打开是可能的,原因是应用程序基本上冻结在内存中.以下是类似问题的引用:

你不能打开网络套接字的原因是,当你的应用程序收到连接时没有跳到前台,它无法响应网络流量(因为如果它不在前台,它的内存内容被冻结).

但是,我确实在网站推送通知中找到了这个页面,该页面向您展示了即使您的网站未在Safari中运行时如何注册用户以接收通知.

还有一些其他选项:如果要发送连续更新,您可以编写应用程序并按照Apple网站上的说明永久保持套接字打开,或者您可以配置应用程序以实现推送通知.

对不起,我找不到快速修复,但我希望这些选项中至少有一个适合你!


Tre*_*Dev 4

我找到了一种让 WebSocket 在 Mobile Safari 中保持活动状态的巧妙方法。

基本上它与这个问题的解决方案相同。

创建一个无限循环音频文件以保持 Javascript 运行:

<audio loop src="http://www.sousound.com/music/healing/healing_01.mp3"></audio>
Run Code Online (Sandbox Code Playgroud)

注意:启动音频文件需要一些用户交互。

如果 WebSocket 以与音频或视频文件相同的方式使浏览器保持活动状态,那就太好了。

PS 这也适用于 Android。

  • @k3a 我发现不公平的是,本机应用程序可以保持其线程处于活动状态,而网络应用程序则不能 - 特别是在使用 ws 时,重点是实时更新!更好的解决方案是 Android 要求用户允许这种情况发生。 (3认同)