(想要更新一个新客户端,该客户端使用迄今为止创建的所有聊天室的列表进行登录)
假设我做了这样的事情:(每次有人加入应用程序时)
socket.emit('updateClient', rooms);
rooms
是一个对象,由 Room
对象的许多 room
实例组成,该对象本身很小,但代码却很大作为 room
prototype
房间
示例:
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
...
}
我的问题是:
原型(prototype)会被发送给客户吗? (不想那样) 并且它会以我这样做的方式使套接字请求“繁重”吗?
最佳答案
socket.io 可能会使用 JSON.stringify
来发送任何对象,而 JSON.stringify
只会序列化一个对象的“自己的”属性(并且会遗漏任何函数最重要的是)。所以不,发送的序列化对象不会很重。同样,它可能不包含您期望的所有属性。它将仅包含您在特定 room
对象上明确设置的那些。
参见 How to stringify inherited objects to JSON? , Why is JSON.stringify not serializing prototype values? .
关于node.js - 向客户端发送数据(数据是具有大原型(prototype)的对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16438147/