【发布时间】:2012-08-25 13:24:35
【问题描述】:
我正在使用 node.js 和 socket.io 编写一个应用程序,用户可以在其中在个人聊天室中相互交谈。每个人都可以有多个打开的聊天室。当用户想要退出聊天室时,系统必须移除该聊天室的所有套接字监听器。
websocket.on('createRoom', function(roomID) {
...
var room = generateRoom();
...
// Leaving room
$('#exitButton').on('click', function() {
// Removes
websocket.removeAllListeners('createRoom');
});
// User joins the room
websocket.on('main/roomJoin/'+roomID, function(username) {
alert(username + ' has joined the room');
});
...
websocket.on('chat/messageReceived/'+roomID, function(message) {
room.printMessage(message);
});
});
问题是 removeAllListeners 不会删除内部监听器,所以如果另一个用户在另一个用户退出后进入房间,他会收到警报。
另一种方法是将听众放在外面,但管理多个房间比较困难。
谢谢。
【问题讨论】:
-
我终于手动删除了每个监听器。
-
如果您已经解决了问题,请发布您的解决方法作为答案。
标签: jquery node.js socket.io listener