向客户端发送数据(数据是具有大型原型的对象)

时间:2013-05-08 10:19:29

标签: node.js sockets socket.io

(想要使用目前创建的所有聊天室列表登录的新客户端更新)

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

socket.emit('updateClient', rooms);

rooms是一个对象,由roomRoom对象的prototype个实例组成,它本身很小,但有一个非常大的代码room { {1}}

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
    ...
}

我的问题是:

原型会被送到客户端吗? (不希望如此) 并且它会以我正在做的方式使套接字请求“沉重”吗?

1 个答案:

答案 0 :(得分:1)

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

请参阅How to stringify inherited objects to JSON?Why is JSON.stringify not serializing prototype values?