3

(想要更新一个新客户端,该客户端使用迄今为止创建的所有聊天室列表登录)

假设我做这样的事情:(每次有人加入应用程序时)

socket.emit('updateClient', rooms);

rooms是一个对象,由一个对象的许多room实例组成,该Room对象本身很小,但具有相当大的代码prototype作为room

示例rooms

var rooms = {};  // contain all "Room" instances
..
..
// 'room' will create new instance for every "room" created
var room= new Room();
// save reference in `rooms`
rooms[room.id] = room;
..
var Room = function(){
    this.id = RANDOM NUMBER
    this.people = []; // an array of people in the room
}

Room.prototype = {
    ...
    A LOT OF INNER FUNCTIONS
    THAT ARE IRRELEVANT TO THE CLIENT
    ...
}

我的问题是:

原型会发送给客户吗?(不希望这样)并且它会以我这样做的方式使套接字请求“沉重”吗?

4

1 回答 1

1

socket.io 可能会JSON.stringify用来发送任何对象,并且JSON.stringify只序列化对象的“自己的”属性(并且会在此之上省略任何函数)。所以不,发送的序列化对象不会很重。同样,它可能不包含您期望的所有属性。它只会包含您在特定room对象上明确设置的那些。

请参阅如何将继承的对象字符串化为 JSON?,为什么 JSON.stringify 不序列化原型值?.

于 2013-05-08T11:34:32.683 回答