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" });