如何通过带有棘轮的单个 websocket 发送请求发送一组对象?
How to send an array of objects through a single websocket send request with ratchet?
例如,目前我必须遍历每个对象并对对象参数进行字符串化,为数组中的每个对象发送单独的消息。这使得过程非常缓慢,并导致用户之间出现一些同步问题。我如何一次将所有对象字符串化并发送并解析结果?
客户端是 javascript,服务器使用棘轮 php。
for (let i = circles.length - 1; i >= 0; i--) {
if (connected) {
websocket_server.send(
JSON.stringify({
'type': 'circleData',
'user_id': circles[i].user,
'i': i,
'x': circles[i].x,
'y': circles[i].y,
'r': circles[i].r,
'c': circles[i].c,
})
);
}
}
没关系,我是个白痴。只需将对象数组字符串化。当它从另一端出来时,它将是一个对象数组,但它不再与 class 相关联。因此,您需要使用对象数组数据在接收到对象时重建对象,以便使用对象方法。除了重新创建对象之外,如果有人有更好的方法将数据与 class 相关联,请告诉我。
websocket_server.send( JSON.stringify({
'type': 'circleData',
'obj_array': circles,
})
);
编辑:
这个重新分配 class 原型的解决方案应该有效:
例如,目前我必须遍历每个对象并对对象参数进行字符串化,为数组中的每个对象发送单独的消息。这使得过程非常缓慢,并导致用户之间出现一些同步问题。我如何一次将所有对象字符串化并发送并解析结果?
客户端是 javascript,服务器使用棘轮 php。
for (let i = circles.length - 1; i >= 0; i--) {
if (connected) {
websocket_server.send(
JSON.stringify({
'type': 'circleData',
'user_id': circles[i].user,
'i': i,
'x': circles[i].x,
'y': circles[i].y,
'r': circles[i].r,
'c': circles[i].c,
})
);
}
}
没关系,我是个白痴。只需将对象数组字符串化。当它从另一端出来时,它将是一个对象数组,但它不再与 class 相关联。因此,您需要使用对象数组数据在接收到对象时重建对象,以便使用对象方法。除了重新创建对象之外,如果有人有更好的方法将数据与 class 相关联,请告诉我。
websocket_server.send( JSON.stringify({
'type': 'circleData',
'obj_array': circles,
})
);
编辑:
这个重新分配 class 原型的解决方案应该有效: