默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
我认为在你的IM中使用“具体命令+protobuf二进制数据(参数)”这种方式不是最佳途径,这差不多就是一个命令对应一个.proto文件,后期要改一个命令则所有其它平台都要重新编译一下,这太难维护了。

建议正确地理解Protobuf,即Protobuf只是一种数据格式,它跟早期很多写IM的人用字符串加特殊符号拼装协议或者用byte数组拼装协议是一样的道理。即:用profobuf定义好一个全局协议格式,不同的命令只是其中的type字段值内容不一样而已。

如果你对协议的定义有疑问,你可以在论坛里找文章,比如这篇里的协议定义方式:http://www.52im.net/thread-298-1-1.html,可以给你带来灵感:
请教IM中netty+protobuf 如何更好地使用?_102453fc8yazukmgpgpg8g.png

还有这一篇也可以看看《理论联系实际:一套典型的IM通信协议设计详解》:http://www.52im.net/thread-283-1-1.html
评论 5
引用:xxm 发表于 2017-02-13 10:51
body-data里面是json类型的参数吗
我之前使用的是version + type+ body-length + body(json参数) 简单 ...

你项目组的人说的是对的,要让protobuf能极致压缩的话,确实是要针对每一个协议来按照pb能最大化压缩来确定每一个字段的类型的,就是将就它,但显然维护就麻烦了。

所以通常情况下,都是在im真正稳定前,别整什么pb,等协议全部定下来后,再改成pb就不麻烦了,必竟产品稳定后,不可能没事老动协议。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部