响应(在)卸载事件取消订阅PubNub通道
Unsubscribe to a PubNub channel in response to (before)unload event
我正在使用PubNub服务在angular中构建一个多人游戏,包括presence插件。
因为我需要检测是否有人离开游戏意外-为了发送消息给其他玩家和结束游戏-我试图取消订阅用户时,他刷新页面或转到其他一些url。然而,在Chrome中——与FireFox相反——没有触发存在事件,这可能意味着用户在离开页面之前没有取消订阅。
代码: $(window).bind("unload",function(e) {
PubNub.ngUnsubscribe({channel:$scope.game.channel});
e.preventDefault();
});
我知道这些事件(beforeunload
和unload
)是有问题的,浏览器支持很差,这可能是失败的原因。如果是这种情况,我可以使用其他跨浏览器检测方法吗?
没有可靠的方法来捕捉浏览器关闭。"beforeUnload"事件是你最好的选择,但大多数移动浏览器不会触发它。在PubNub中处理用户关闭浏览器的最佳方法是在订阅时指定心跳(http://www.pubnub.com/docs/javascript/api/reference.html#subscribe)。心跳告诉PubNub在非正常断开连接(例如关闭浏览器)之后应该等待多少秒,然后才认为用户超时了。这是默认值为320,可以设置为低至6秒(> 5)。它仍然不会立即生效,但您将在浏览器关闭后6秒收到存在"超时"动作。心跳过低可能会影响你的电池寿命,所以要小心。
另外,我知道我把文档链接到了JS API,但是angular的ngSubscribe允许大部分相同的参数。
希望对你有帮助。
相关文章:
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 通过webrtc-pubnub传递上传的图片
- 如何使用RGB或HSL显示HWB/HSB/CMYK通道
- 将pubnub仅在局域网上工作
- GoogleCalendarJavaScriptapi,将用户添加到带有“;写“;通道
- Kurento数据通道的创建和管理
- 如何启动WebRTC数据通道
- 从source-mirth检索通道目标中的数组结果
- HTML5画布到PNG在alpha透明时将所有通道归零
- 正在禁用derbyjs中的浏览通道
- EffectComposer和具有三个.js的alpha通道
- Javascript+Pubnub聊天通知
- pubnub存储和播放历史记录功能
- 无法在pubnub javascript回调中获取错误
- PubNub Twitter数据流中的文本过滤
- $http角度通道对象
- Javascript Polymer - pubnub 回调函数
- Pubnub 在重新 sujbscribe 时接收所有消息
- 按 alpha 通道绘制的图像映射
- 响应(在)卸载事件取消订阅PubNub通道