Socket.io正确保存用户套接字的方法

时间:2015-12-09 14:50:02

标签: javascript node.js sockets socket.io

好的,所以我正在玩Test\nTest 并创建服装"聊天"我的用户的房间。为此,我创建了以下对象:

Socket.io

这允许我创建 function MentorRoom(room_id, organization_id, roomname, is_private, creator) { this.activeUsers = []; this.room_id = room_id; this.organization_id = organization_id; this.roomName = roomname; this.is_private = is_private; this.creator = creator; } MentorRoom.prototype.appendUser = function (user) { this.activeUsers.push(user) }; MentorRoom.prototype.removeUser = function (user) { this.activeUsers.splice(this.activeUsers.indexOf(user), 1); }; MentorRoom.prototype.containUser = function (user) { return this.activeUsers.indexOf(user) >= 0; }; 个对象。

当创建其中一个房间时,它可能看起来像这样:

MentorRoom

现在,在这种情况下,用户还包含一个this.createRoom = function (room, user) { var id = mentorRooms.length + 1; var newRoom = new MentorRoom(id, room.organization_id, room.name, room.is_private, user); newRoom.appendUser(user); mentorRooms.push(newRoom); return id; }; 对象,以便稍后我可以socketemit。例如,当另一个用户加入

然而,这会产生一些问题!

例如,如果我希望将我的房间清单发送给另一个客户(以便他可以看到有哪些房间),我会这样做:

socket

但是,由于每个房间都包含一个也包含套接字的变量(socket.emit('updateRoomList', rooms); ),我会收到以下错误:

creator

这个问题将在我现在拥有的架构中持续存在,因为当我将用户添加到房间中的RangeError: Maximum call stack size exceeded 列表时,我还需要他们的套接字,以便我可以直接向每个用户发送消息。

所以我的问题是如何存储和发送包含activeUsers对象的变量。

0 个答案:

没有答案