好的,所以我正在玩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;
};
对象,以便稍后我可以socket
到emit
。例如,当另一个用户加入
然而,这会产生一些问题!
例如,如果我希望将我的房间清单发送给另一个客户(以便他可以看到有哪些房间),我会这样做:
socket
但是,由于每个房间都包含一个也包含套接字的变量(socket.emit('updateRoomList', rooms);
),我会收到以下错误:
creator
这个问题将在我现在拥有的架构中持续存在,因为当我将用户添加到房间中的RangeError: Maximum call stack size exceeded
列表时,我还需要他们的套接字,以便我可以直接向每个用户发送消息。
所以我的问题是如何存储和发送包含activeUsers
对象的变量。