在javascript套接字中发送JSON.stringify对象和普通对象有什么区别?
我正在构建一个javascript套接字应用程序,它使用在javascript套接字中发送JSON.stringify对象和普通对象有什么区别?,javascript,json,websocket,stringify,Javascript,Json,Websocket,Stringify,我正在构建一个javascript套接字应用程序,它使用socket.io,我对网络编程还不熟悉。我不知道在网络中传递数据的最佳方式是什么。我知道传递二进制数据是最有效的方法,但它更复杂。现在我想从普通对象开始 我以前构建过一个聊天应用程序,我只是在其中使用了socket.emit('message',obj),它工作得非常好。但是我看到一些示例使用socket.emit('message',JSON.stringify(obj))传递数据。我不确定这里有什么好处。它是否使网络上传输的数据更小?
socket.io
,我对网络编程还不熟悉。我不知道在网络中传递数据的最佳方式是什么。我知道传递二进制数据是最有效的方法,但它更复杂。现在我想从普通对象开始
我以前构建过一个聊天应用程序,我只是在其中使用了socket.emit('message',obj)
,它工作得非常好。但是我看到一些示例使用socket.emit('message',JSON.stringify(obj))
传递数据。我不确定这里有什么好处。它是否使网络上传输的数据更小?它比普通对象更有效吗?如果在socket.io中传递对象作为数据参数,它将在发送方端自动调用JSON.stringify()
,并在接收端自动调用JSON.parse()
因此,您只需传递一个对象,接收器将返回一个对象,socket.io将自动为您处理这两者之间的一切
据我所知,自己调用socket.emit('message',JSON.stringify(obj))
没有什么好处。只需使用socket.emit('message',obj)。它不会更小、更快或更高效。默认情况下,对您来说,手动操作是没有意义的
最有可能的是,简单的socket.emit('message',obj)
实现了您想要的功能。即使你想这样做,事情也是这样。它似乎“只是工作”,没有太多的文档。基本上,你必须发射通过检查的东西,也就是说,它必须是
由于某种原因,Node.js API中没有-method。如果您想将对象
作为二进制发送,则必须设计如何将其表示为二进制数据。这是否是个好主意,取决于您处理的数据类型。如果您的数据主要是字符串,那么您就不能对其进行太多填充。如果你有很多整数、数字、布尔值等,那么使用二进制可能是个好主意,但是设计高效的二进制格式需要做很多额外的工作
此外,还有一种称为的格式。它也有浏览器实现,所以从技术上讲,应该可以将任意Javascript
对象
序列化到缓冲区
,使用socket.io发送,然后在浏览器中反序列化。我从未在浏览器环境中使用过它:这听起来很有趣,但需要一些性能测试。什么是obj
?在它通过连接之前,必须将其序列化为某些内容。也许socket.io在幕后为你做了这件事。似乎emit
已经为你做了这件事:(而send
让你选择如何序列化数据)。@Thiloobj
是一个简单的对象。谢谢,它提供了非常丰富的信息,是一个非常完整的答案。答案肯定是被低估的;)