默认
发表评论 11
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教WebSocket实现的IM在弱网络环境下的优化
阅读(55391) | 评论(11 收藏 淘帖
我目前做的IM,是基于WebSocket的,包括手机端和WEB端,在实验室环境下一切畅通。
但手机端在弱网络的环境下,比如公车上,地铁里,情况就惨不忍睹了。
现在想请教一下,如果我要改善在弱网络情况下的情况,要如何做呢?
1、继续往WebSocket方向优化,优化发送流程?
2、还是直接改成udp协议?udp协议在弱网络情况下是否最优?

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

推荐方案
评论 11
有一个事实必需要清楚:
在公交车、地铁  这样的移动环境下,移动信号是分布很不均匀的,要想平稳完成IM信息交互,对于所有的IM来说都是挑战。这需要大量地实践和优化,这一点不管用哪种协议,都是个很大的挑战,你要有心理准备。

再来说说协议本身。WebSocket本身是用TCP协议实现的,而TCP的设计目的就是为了可靠通信,对通信的质量要求很高,它的算法实现目的就只有一个——就是可靠。但显然,包括它的丢包重传、指数退避这些策略,显然都没有考虑过弱网络环境下的用户体验问题——实际上这些策略一旦启动,对于现在的移动端体验这么敏感的场景下,用户体验就是灾难。

所以,目前来说,要用tcp协议,弱网环境下的用户体验糟糕是一定的。弱网络环境下的通信,用udp当然要好很多了。不过Web端据我了解并没有udp作为传输层的方案存在。
通常native程序,像微信这种极度注重产品品质和体验的,都是多套方案一起混合使用,当然这样的构架设计和实现的代价也不是一般的产品或团队能玩的好的了。

上面说了这么多,但对于web端im来说,可选的技术方案本来就有限,对于弱网络来说你也别无选择。只能是把这个“很差”的体验从功能实现的角度优化的用起来不那么差而已了。
用udp肯定要好太多,但你这web端im,也没有办法实现呢。还是从功能体验上作文章吧
签名: 该会员没有填写今日想说内容.
引用:JackJiang 发表于 2016-05-30 09:33
有一个事实必需要清楚:
在公交车、地铁  这样的移动环境下,移动信号是分布很不均匀的,要想平稳完成IM信 ...

顶一个,web端im貌似真没办法从技术的角度折腾太深
签名: 国庆长假还没有缓过来,请让我静一静,产品狗死远点...
弱弱地问一句,你不会是在你的移动端IM里用的WebSocket实现即时通讯聊天的吧
引用:pigpig 发表于 2016-05-30 09:48
弱弱地问一句,你不会是在你的移动端IM里用的WebSocket实现即时通讯聊天的吧

是的,移动IM我用了websocket。所以现在情况很糟糕。
签名: 该会员没有填写今日想说内容.
引用:JackJiang 发表于 2016-05-30 09:33
有一个事实必需要清楚:
在公交车、地铁  这样的移动环境下,移动信号是分布很不均匀的,要想平稳完成IM信 ...

我就想请教一下,如果我移动端改用udp,是否能够优化。
因为现在时间太紧,不敢走错路。
签名: 该会员没有填写今日想说内容.
引用:kezhaoyuan 发表于 2016-05-30 09:59
我就想请教一下,如果我移动端改用udp,是否能够优化。
因为现在时间太紧,不敢走错路。

用UDP那是肯定那够改善弱网络环境下的即时通讯体验的。MobileIMSDK就是基于UDP,当时就是为了跨国这样的超烂网络下用的。

你还可以在论坛里找到有关微信的文章,微信跨国集群之间的通信也是因为网络烂而自已使用udp实现了一套数据传输方案。
引用:JackJiang 发表于 2016-05-30 10:06
用UDP那是肯定那够改善弱网络环境下的即时通讯体验的。MobileIMSDK就是基于UDP,当时就是为了跨国这样的 ...

明白了,谢谢。
签名: 该会员没有填写今日想说内容.
看看微信的架构里“容灾方案”这一段:http://www.52im.net/thread-177-1-1.html,网络太烂的情况下他们实现了一个类TCP协议,其实就是udp+QoS这一整套算法。
引用:JackJiang 发表于 2016-05-30 10:09
看看微信的架构里“容灾方案”这一段:http://www.52im.net/thread-177-1-1.html,网络太烂的情况下他们实 ...

微信这帮人真是牛
引用:JackJiang 发表于 2016-05-30 10:09
看看微信的架构里“容灾方案”这一段:http://www.52im.net/thread-177-1-1.html,网络太烂的情况下他们实 ...

谢谢
签名: 该会员没有填写今日想说内容.
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部