socket.io – 是JSON必须发送一个对象
我在前端有一个对象,我想把它广播给所有连接的客户端。 我可以把它作为一个单纯的对象,我定义它的方式吗? 或者我总是必须在发送之前将其作为JSON对象进行绑定?
我的对象:
var myBox = { x: 400, y: 700, w: 231, h: 199, c: "red", .... }
我需要stringify?
var myBox = JSON.stringify({ x: 400, y: 700, ... });
目前我发送这样的信息和消息是一个JSON:
socket.emit('message', msg);
你可以传递这个对象来emit
而不用自己把它串起来。 它将作为纯文本发送,但客户端callback将传递一个parsing对象。
换句话说,这样做很好:
var myBox = { x: 400, y: 700, w: 231, h: 199, c: "red" } socket.emit('message', myBox);
在客户端上听时,不需要担心JSON.parse
:
socket.on('message', function (data) { alert(data.x); });
你可以用对象的数据做一个socket.emit。
喜欢这个:
socket.emit("message",{x:myBox.x,y:myBox.y, w:myBox.w, h:myBox.h, c:myBox.c});
或尝试:
socket.emit("message",myBox); //haven't tested it, but if it works, give plalx credit
是的,要发送一个对象,你需要将它序列化为一个string(或者ArrayBuffer,准确的说) – 一些位的序列(在HTTP / WS的引擎之下)。
然而,这个序列化并不一定需要JSON.stringify
,也可以是其他任何东西。
从我读到的文档中 ,Socket.io具有“ 自动JSON编码/解码 ”,因此它将为您调用JSON.stringify
,接受纯对象作为.emit
参数。