2

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

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

谢谢。

4

1 回答 1

0

哇。我在谷歌发现了这个问题,我意识到我从未发布过我的解决方案。

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

然后我将特定部分的事件(如通知、新评论、聊天消息)发送到相应的房间。

于 2014-03-30T17:21:15.360 回答