在Mobile Safari中保持WebSocket的活力

时间:2014-07-17 06:13:57

标签: javascript ios websocket mobile-safari

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

我希望在一天内向用户发送持续更新,并且看起来愚蠢的是他们的屏幕应始终必须解锁才能接收这些通知。

还有其他选择吗?

2 个答案:

答案 0 :(得分:6)

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

  

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

但是,我确实在Push Notifications for Websites上找到了这个页面,该页面向您显示了即使您的网站未在Safari中运行,也可以注册用户以接收通知。

还有其他一些选项:如果您想发送连续更新,您可以编写应用并按照Apple网站上的说明keep a socket open permanently,或者您可以配置应用以实施Push Notifications

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

答案 1 :(得分:2)

我发现了一种在移动Safari中保持WebSocket活跃的hacky方式。

基本上它与this question的解决方案相同。

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

<audio loop src="http://www.sousound.com/music/healing/healing_01.mp3"></audio>

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

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

PS这也适用于Android。