繁体   English   中英

具有socket.io的单页应用程序中特定于节的侦听器

[英]Section-specific listeners in single page app with socket.io

我正在构建一个具有一些实时功能(通知,实时评论,...,当然还有经典的聊天室)的应用。 它被构造为一个单页应用程序。 我正在使用page.js来处理路由,require.js,以及一个简单的自定义mvc框架。 带有node和socket.io的后端,用于实时支持。

关键是,我有不同的部分,例如家,帖子,聊天。 每个部分都是根据路线动态呈现的。 现在,我应该如何为每个部分绑定特定的套接字事件? 我不想听与当前查看部分无关的事件。 每当用户更改该节时,是否应针对另一个命名空间创建一个新的连接? 还是应该删除套接字中的所有事件侦听器,并附加一组新的事件? 我不知道什么是最好的方法,或者socket.io是否是最好的选择。

谢谢。

哇。 我在Google中发现了这个问题,并且意识到自己从未发布过解决方案。

由于有了这个答案 ,我解决了使用房间而不是名称空间的问题。 因此,当用户更改节时,套接字将发出“ 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);
  });
});

然后,我将特定部分的事件(例如通知,新评论,聊天消息)发送到相应的会议室。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM