默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK能改造成使用Protobuf作为传输的数据格式吗?
小弟想要用MobileIMSDK做app推送,领导要求使用protobuf作为数据传输格式,我想问一下这个能直接传输byte字节吗?我看demo里面是传的字符串,如果我将字节数组再转为字符串,就失去了原本减少数据流量的意义了。这个怎么解决呢?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已回复] 求教MobileIMSDK发出消息和返回指纹对应的问题下一篇:[已回复] MobileIMSDK android端未登录直接发送消息 系统崩溃

本帖已收录至以下技术专辑

推荐方案
评论 8
MobileIMSDK改造成Protobuf很简单,你只需要抓住关键点即可:
1)找到sendData方法的最终发送方法,其实它就是发送的byte流;
2)开放给开发者的,其实是sendData(Protocal)这样的方法,也即对于开发者来说发送的都是Protocal对象,所以你只需要在Protocal对象的序列化和反序列化时转Protobuf即可。

[已回复] MobileIMSDK能改造成使用Protobuf作为传输的数据格式吗?_WX20180717-164853@2x.jpg

以上这种方法的修改,对上层的API来说是透明的,不需要改动API,也是最优雅的。不知你是否理解。
引用:JackJiang 发表于 2018-07-17 16:37
MobileIMSDK改造成Protobuf很简单,你只需要抓住关键点即可:
1)找到sendData方法的最终发送方法,其实它 ...

非常感谢,明白了,已经找到相关代码
引用:montague 发表于 2018-07-17 16:53
非常感谢,明白了,已经找到相关代码

嗯嗯

大佬,我将代码做了修改,将传输的protocal字段值组装到另一个protobuf生成的实体类中传输,结果出现了一种现象:客户端登录,服务端收到登录的消息是正常的,可以解析,然后登录后服务端返回给客户端的数据,客户端收到后,收到的字节后面多出了一大串000000这样的。请问知道这个可能的原因吗?客户端开始登录时发给服务端的字节数据却是正常的。
引用:montague 发表于 2018-07-24 17:48
大佬,我将代码做了修改,将传输的protocal字段值组装到另一个protobuf生成的实体类中传输,结果出现了一 ...

大佬你是不是发送定长字节,不足补位了?
引用:montague 发表于 2018-07-24 17:48
大佬,我将代码做了修改,将传输的protocal字段值组装到另一个protobuf生成的实体类中传输,结果出现了一 ...

大佬你是不是发送定长字节,不足补位了?

如果做了补位,为什么客户端发给服务端的却没出现这个问题呢?
引用:montague 发表于 2018-07-24 17:53
大佬你是不是发送定长字节,不足补位了?

没有这回事。你自已可以看的到源码。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部