带有socket.io的单页应用程序中的特定部分侦听器
Section-specific listeners in single page app with socket.io
我正在构建一个具有一些实时功能的应用程序(通知、实时评论……当然还有经典聊天室)。它的结构是一个单页应用程序。我正在使用page.js来处理路由、require.js,目前还有一个简单的自定义mvc框架。使用node和socket.io进行后端实时支持。
问题是,我有不同的部分,比如家,帖子,聊天。每个部分都会根据路线进行动态渲染。现在,我应该如何为每个部分绑定特定的套接字事件?我不想听与当前查看部分无关的事件。每次用户更改节时,我是否应该创建一个新的连接,以不同的命名空间为目标?还是应该删除套接字中的所有事件侦听器,并附加一组新的事件?我不知道什么是最好的方法,也不知道socket.io是否是最好的选择。
谢谢。
哇。我在谷歌上发现了这个问题,我意识到我从来没有发布过我的解决方案。
多亏了这个答案,我解决了使用文件室而不是名称空间的问题。因此,当用户更改节时,socket会发出一个"changeSection"事件。在服务器端,我离开了与旧部分相对应的房间,加入了新的部分:
io.sockets.on('connection', function (socket){
socket.on('changeSection', function (section){
// Leave all previous rooms
for (var room in io.sockets.manager.roomClients[socket.id]) socket.leave(room.slice(1));
// Join new
socket.join(section);
});
});
然后,我将特定区域的事件(如通知、新评论、聊天消息)发送到相应的房间。
相关文章:
- 在javascript中取消绑定侦听器
- 在偶数侦听器块中绑定和取消绑定
- 如何将InfoBoxes与googlemaps实用程序库v3绑定到循环中的点击侦听器
- 正在删除使用绑定添加的事件侦听器
- DOM 绑定错误:未定义侦听器方法
- AngularJS:使用 jQuery 将事件侦听器绑定到 ng-repeat 生成的元素
- NodeJS&Socket.IO:发出请求事件并获取响应,我应该在何时/何地绑定侦听器
- AngularJS将同一个侦听器绑定到不同的输入,如何获取输入值
- 无法删除(绑定)事件侦听器
- 循环中的闭包:在循环中声明的变量在绑定事件侦听器时未正确预设到处理程序函数中
- 如何将多个侦听器绑定到一个元素
- 到事件侦听器Jquery的常量绑定
- 将实时更改侦听器绑定到选择框
- 删除动态绑定到未确定元素的侦听器
- 用JavaScript将事件侦听器绑定到特定日期和时间之间的提交表单
- 监视一个方法与西农.方法绑定到事件侦听器.方法已执行,但.calledOnce为false
- “this"当方法绑定到事件侦听器时未定义
- 在文档上绑定事件侦听器vs在多个元素上绑定事件侦听器
- 我是否应该取消绑定事件侦听器以防止内存泄漏
- 绑定事件侦听器函数,以后需要调用函数吗?