gpt4 book ai didi

node.js - 向客户端发送数据(数据是具有大原型(prototype)的对象)

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:46 25 4
gpt4 key购买 nike

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

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com