如何从WebSocket客户端计算机进入睡眠状态或应用程序进入后台(iPad上的Safari)中恢复
How do I recover from a WebSocket client computer going to sleep or app going to background (Safari on iPad)
我有一个浏览器客户端Javascript,它打开一个WebSocket(使用socket.io)来请求启动一个长时间运行的进程,然后在进程完成时得到一个回调。当我得到回调时,我会更新网页,让用户知道这个过程已经完成。
这一切都很好,除了在我的iPad上,当我切换到另一个应用程序然后回来时(它从来没有得到回调,因为我想这个应用程序当时没有在线)。我假设同样的事情也会发生在笔记本电脑或其他在等待回调时睡觉的电脑上。
有没有一种标准的方法(或任何方法)来处理这种情况?谢谢
作为参考,如果您想查看问题页面,请访问http://amigen.perfectapi.com/
在这种情况下需要考虑以下几点:
检测应用程序离线/上线
参见:online
和offline
事件
当您的应用程序在计算机唤醒后检测到online
事件时,您可以获得任何遗漏的信息。
对于较旧的web浏览器,您需要以更聪明的方式来做到这一点。在Pusher,我们在客户端和服务器之间添加了一个乒乓检查。如果客户端在一定时间内没有收到ping,它就会知道存在连接问题。如果服务器发送了一个乒乓球,但在一定时间内没有收到乒乓球,它就知道有问题。
规范中定义了乒乓机制,但发送乒乓的方式尚未在WebSocket API上定义。
获取遗漏信息
大多数实时服务器只向已连接的客户端发送消息。如果客户端没有连接,可能是由于暂时的网络干扰,或者他们的计算机已经休眠了一段时间,那么这些客户端将错过消息。
有些框架确实通过历史记录/缓存提供了对消息的访问。对于那些没有的人,你需要检测到问题(如上所述),然后提取任何遗漏的消息。一个很好的方法是为每条消息提供一个时间戳或序列ID,这样你就可以打电话给你的网络服务器说";给我自X〃以来的所有消息;。
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 对iPad上的点击事件反应缓慢
- 选项卡侦听器未被来自后台脚本的消息激活
- WinJS(WP8.1):从后台任务更新辅助磁贴
- JS页面在后台加载时显示动画
- jQuery(this).Pparent().Pparente().Prent().find()在iPad上不起作用
- Mozilla没有;t在附加视频src后触发视频后台事件
- 将图像从后台页面传递给内容脚本javascript
- 如何为后台更改程序代码设置cookie
- iPad没有加载所有HTML5元素
- iPad虚拟键盘-哪一个-javasctript解决方案
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- 当绑定到AngularJS中的函数时,会在后台发生什么
- jquery,while循环在后台运行,同时while循环
- 防止在移动Safari(iPad/iPhone)中长按/长按默认上下文菜单
- 使用javascript后台脚本获取Yotutube频道信息
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Javascript-iPad Tab键检测,带蓝牙键盘
- 在iPad上查看时忽略CSS
- 如何从WebSocket客户端计算机进入睡眠状态或应用程序进入后台(iPad上的Safari)中恢复