我想在客户端和服务器之间发送对象。但是,当我尝试传递一个对象时,我发现我无法使用它(值未定义)。
为了解决这个问题,我只是将对象作为字符串传递给连接 使用
json.stringify at source
和
json.parse at destination
到目前为止,这是有效的,但我担心这是一个不优雅的解决方案,当我开始使用复杂的对象(图形对象等)时,我将最终处于一个不好的地方。
sockjs中是否存在使用对象的原生方式?
感谢。
答案 0 :(得分:1)
使用网络,一切都以二进制形式0/1传输。无论是什么数据(图像,json,字符串,音频,视频等)。
从一种形式转换为另一种形式的过程称为序列化/反序列化。 WebSockets默认支持二进制和基于文本的消息。文本是utf-8,因此将字符表示中的图像作为文本发送将是过度的,甚至base64也不是最好的方法,因为它需要多次转换。
对于二进制类型的数据(图像,音频,视频),它应该以二进制(Blob)形式发送,字符串应该以文本形式发送。
JSON - 基于文本的人类可读格式,解析器今天非常快,所以它是#34;好的"字符串化并解析它以发送。如果性能atm存在实际问题,那么你需要在这里解决你的逻辑和数据协议,考虑使用protobuff或bson以更有效的方式发送数据。
但是你不应该在发展的早期阶段担心这一点 处理真正的问题会更好。