推送订阅和取消订阅过程
Pusher subscribe and un-subscribe process
我在一个相当简单的聊天应用程序上遇到了Pusher订阅/取消订阅状态组的问题。 在给定时间应该有两个订阅的频道。用户在主干路由之间导航时在通道之间切换,因此没有硬页面重新加载。
推送器似乎大部分时间都在运行,但我在频道订阅时出现间歇性错误。
我编写了两个加入频道方法,如果其中一个已加入以前的路由,则取消订阅。 我担心 Pusher 中发生了一些异步的事情,正在破坏事情。
我的单个通道的推送器相关代码:
window.pusher = new Pusher('<%= Pusher.key %>', {
authEndpoint: 'api/pusher/auth'
});
路线:
this.groupFeed = this._pusherSubscribeGroup(group_id);
this.groupFeed.bind('new_conversation', function(data) {
var newConv = new App.Models.Conversation(data);
this.group.conversations().add(newConv);
}.bind(this));
取消订阅帮助程序:
_pusherSubscribeGroup: function (group_id) {
if (this._groupChannelName) {
window.pusher.unsubscribe(this._groupChannelName);
}
this._groupChannelName = 'presence-group-' + group_id;
return window.pusher.subscribe(this._groupChannelName);
}
控制台错误:
Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Existing subscription to channel presence-group-1"}}}
推送器: 错误 : {"类型":"WebSocketError","错误":{"类型":"推送器错误","数据":{"代码":空,"消息":"频道状态组-1"}}} 的现有订阅
该消息告诉您,就 Pusher 服务而言,由socket_id
标识的此特定客户端已订阅presence-group-1
通道。从客户端的角度来看,此错误通常不是您实际需要担心的事情。
但是,如果用户通过导航路线快速订阅/取消订阅,则值得获取更多信息以完全确定。从提供的代码和说明中,无法确定问题出在 Pusher 服务还是客户端应用程序中。
提供 Pusher JavaScript 库日志记录的输出将提供更多有助于确定原因的详细信息。
相关文章:
- 为effect Composer创建GodRays效果过程
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jquery点击函数select&取消选择
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript取消隐藏和隐藏表单中的某些元素
- 如何销毁/删除/取消绑定SnapSVG.js
- 滚动然后捕捉到顶部而不是取消捕捉
- 取消绑定主干视图事件
- 如何取消object.prototypes javascript的一个函数
- 使用javascript在页面加载时取消选中所有复选框
- 阻止浏览器对keydown事件作出反应,但不取消该事件
- jquery选中并取消选中所有操作
- IE11中的第二个调用取消了第一个Fetch API调用
- 为什么使用AWS Signature v4对S3的REST调用并没有真正使用签名过程
- 如何知道使用socket.io订阅/取消订阅频道
- 如何在ASP.NET中取消搜索过程
- 在上传过程中取消异步jquery文件上传
- 推送订阅和取消订阅过程
- 在编辑过程中取消超时