CNode

大家在用node解释或者封装二进制数据时,一般怎么样可以便捷一点?

问答
Pp2227__legacy_56b1661926d02fc6626bb472发布于10 年前最后回复10 年前9 回复4599 浏览0 收藏

情景是这样的,现在有一个二进制的协议,要写程序实现这个协议的转化

一种转化是输入buffer流,输出js对象,一般叫“Parse”,我叫这个做“解释” 另外一种转化是输入一个js对象,输出buffer流,英文好像叫“Stream”,我叫“封装”,但总感觉有更好的叫法

然后大家觉得怎么做这些操作可以便捷一点?例如用这个库?https://github.com/substack/node-binary 或者其他更加好的模式?

或者一般用什么样关键字去搜索?

查看回复

回复 (9)

Q
qingfeng#1·10 年前

你可能需要protobuf、bson、MessagePack 关键词serialize 这里有个benchmark https://github.com/sqfasd/node-serialization-benchmark

引用 qingfeng你可能需要protobuf、bson、MessagePack 关键词serialize 这里有个benchmark https://github.com/sqfasd/node seriali...

@qingfeng 据我所知,protobuf的使用情景是这样的,前端和后端约定一种基于文本的传输格式,然后中间经过protobuf,传输的时候会是一种二进制,比文本要小。 而我现在的情景是,中间传输的二进制格式是固定的,比例你要自己写一个tcp的客户端,那些头是固定下来的了。不知道protobuf和其他你介绍的工具有无这种情景呢?

Q
qingfeng#3·10 年前
引用 p2227__legacy_56b1661926d02fc6626bb472@qingfeng 据我所知,protobuf的使用情景是这样的,前端和后端约定一种基于文本的传输格式,然后中间经过protobuf,传输的时候会是一种二进制,比文本要小。 而我现在的情景是,...

@p2227 protobuf与文本没有关系,它就是一种数据交换的格式,不需要你去做各种parse和pack,你先定义好数据结构,拿到二进制数据之后,直接unserialize成对象,或者有了对象,直接serialize成二进制数据。 只要你的二进制数据能映射成一个数据结构,就可以用protobuf,省了你自己一个一个解析和赋值 有一种情况除外,就是你的二进制数据是超长的数据流,不可能全放在内存中,那就只能使用流的形式,收一点处理一点了

D
dlutwuwei#4·10 年前
S
stuartZhang#5·10 年前

我之前参加过一个项目,其中涉及到了,在浏览器 解析一个 定制格式 的 二进制流(描述的是3D地图信息,最后使用WebGL进行渲染) 并且 输出POJO对象。当时,我就直接使用ArrayBuffer + DataVaiew一个字节一个字节进行分析的。

L
liujavamail#6·10 年前

我这边正在做的一个项目是把16进制的Buffer转成js对象, 然后把js对象转成16进制的Buffer, 就是直接按照协议定义的, 一个个读的, 没有用任何第三方的包, 因为感觉自己定义的协议, 用第三方的, 可能不能适应你所有的场景

引用 liujavamail我这边正在做的一个项目是把16进制的Buffer转成js对象, 然后把js对象转成16进制的Buffer, 就是直接按照协议定义的, 一个个读的, 没有用任何第三方的包, 因为感觉自己定义的协...

@liujavamail 嗯,这几天我自己的写代码的时候也大概总结了一下,或许协议中有一些简单的可以做,但一些复杂的确实很难用到第三方。

参与回复
登录后即可参与回复。登录