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参数。