前言
对于新派单通知、订单时效变更通知等需要及时反馈给用户的消息,目前点我达骑手的解决方案是定时轮询并通过http请求的方式主动从服务器获取变更,这种方式存在一定的缺陷,如http方式轮询流量消耗较高、消息通知不及时等。随着订单量和活跃用户量的急剧增加,这种轮询方式的弊端也逐渐显现出来,需要一种能够及时发送消息且流量消耗较低、弱网环境表现优异的方案替代现有轮询方案,那就是Socket长连接的方式。
Android客户端实现Socket长连接的框架有大名鼎鼎的Netty和Mina,也有微信团队开源的跨平台基础网络框架Mars,也就是本文要介绍的网络框架。
Mars是什么?
Mars是==微信官方==推出的C++编写的跨平台、跨业务的终端基础组件,可以直接在Android、iOS、Mac等平台使用。框架包含Common、STN、SDT、XLog等模块,下图为Mars官方提供的架构图:
各模块的主要功能如下:
1.Common:Mars框架最底层部分,为STN、XLOG、SDT模块提供组件支持,主要包括socket、线程、消息队列、协程等基础工具。
2.STN:信令分发网络模块,也是 Mars 最主要的