Socket.io如何发送JavaScript对象

Socket.io如何发送JavaScript对象,javascript,json,node.js,socket.io,Javascript,Json,Node.js,Socket.io,如何使用Socket.io将JavaScript对象从服务器发送到客户端?我正在使用Socket.io作为WebSocket(使用.send()发送,并使用消息事件监听)。 当我尝试在服务器端执行类似操作时: var myObject = { message: 'Hello World!' } socket.send(myObject); 在客户端,我只得到以下字符串:[object object]您实际上需要发出一个事件: socket.emit('yourEvent', myO

如何使用
Socket.io
将JavaScript对象从服务器发送到客户端?我正在使用Socket.io作为WebSocket(使用
.send()
发送,并使用
消息
事件监听)。 当我尝试在服务器端执行类似操作时:

var myObject = {
    message: 'Hello World!'
}

socket.send(myObject);

在客户端,我只得到以下字符串:
[object object]

您实际上需要发出一个事件:

 socket.emit('yourEvent', myObject);
如果使用
.send()
,则只需发送对象的字符串表示形式,这就是问题所在。请注意,您可以使用
.send()
,但必须首先对对象进行JSON编码,然后在接收时对其进行解码

除非您有特定的原因,否则最好使用标准Socket.IO
.emit()
方法,因为它可以为您完成所有这一切。这就是它的用途。

socket.send()不理解对象,但它喜欢JSON。您可以这样使用:

socket.send(JSON.stringify(myObject));

并使用
JSON.parse(JSON)
将JSON解析为对象。

我刚刚使用一些旧的示例遇到了这个问题。下面是我找到的答案:,我在下面复制


在v0.6中,
socket.send
会自动将类似
{a:'b'}
的对象转换为JSON。您将通过以下方式向客户端发送数据:

socket.send({a: 'b'});
虽然这很酷,但它提出了一个根本问题。JSON不仅编码对象,还编码字符串、数字等!因此,如果您明确表示希望传递JSON,API会更清晰(因为编码/解码JSON会带来性能损失)

在v0.7中,使用
json
标志:

socket.json.send({a: 'b'});
现在,您还可以在浏览器和服务器之间发送和接收自定义事件:

socket.emit('my_event', {a: 'b'});

事件的参数会自动用JSON编码。

尝试在服务器端使用它

socket.json.send({your:'data'})


以及客户端上的
JSON.parse()
方法。

在socket.io V4.x中,无需使用
JSON.stringify()

不需要在对象上运行JSON.stringify(),因为这将为您完成

e、 g


这方面的更多信息。

在发送到我的Android客户端时,对我来说是一个魅力,干杯!非常感谢。但如何在服务器端解析JSON并使用它呢?再次感谢。大部分我都读过。但是他们使用字符串变量。你能帮我吗?是的,如果你发布另一个问题,而不是劫持一个与你所问问题无关的现有问题。。。
// BAD
socket.emit("hello", JSON.stringify({ name: "John" }));

// GOOD
socket.emit("hello", { name: "John" });