APP开发聊天功能经验之通信协议的实现方法,深圳APP开发公司基于前面介绍移动互联网的特性,本文主要介绍一个优秀的聊天功能App通信协议,主要有如下的要求:
·简化系统设计。
·提供可靠高效的消息传输,这个是重点关注的要求
·易于扩展需求。
现在常用的聊天协议如下。
·XMPP:一个基于XML的消息协议,其曾经被广泛应用于Gt alk、Facebook的聊天服务,XMPP协议作为议个被广泛使用的消息协议有大量的网络资利和成熟开源模块在Android和iOS平台上很方便就能集成XMPP协议。IM作为一个复杂的系统有方方面面需要考虑,使用成熟的协议能帮助开发者避免很多问题,提高开发效率。
同时基于XML的XMPP协议的缺点也很明显:耗费流量。下面是XMPP协议的一部分。
从上面XMPPi添加好友的协议中可看到XMPP多么耗费网络流量
·MQTT: IBM开发的聊天协议,一个简单的消息协议。
·类ActivitySync:微信实现的协议,省流量,性能高,但由于是私有协议,IM的所有功能都需要自己实现。
对于创业型的公司来说,从上面三种协议的对比可知,如果需要在最短州司内实现聊天功能,除了使用环信、融云等第三方IM服务外最好选择XMPP协议。
以下为两个基于XMPP协议的著名开源聊天服务器。
(1) Ejobberd,用Erlang语言开发,成熟稳定,支持集群,支持多进程、鬲并发。但由于其是基于小众的Erlang语言,造成了很高的开发和维护成本:招聘熟悉Erlang同时世熟悉聊天的研发人员不容易。
(2) Openfire:用Java语言开发,成熟稳定,插件多,但其对内存要求高,并发低,集群功能弱。
在App产品中如果因为某些原因不能使用第三方IM服务(例如上级领导不信任第三方IM服务),那笔者建议不熟悉Erlang语言的开发人员使用Openfire(如果熟悉Erlang语言当然是用Ejobberd更好),毕竟熟悉Java的开发人员还是挺多,而且在产品初期般并发量不高,等资金和工程卿充足后再对聊天系统进行改造。
某些研发人员有追求完美的天性,但项目初期的环境决定了没法打造完善的系统,使用Openfire不是最完美的方案,但最起码能先把聊天功能做出来。如果项目中必须使用自定义的通信协议,那么开发人员先要解决的是TCP协议通信中常见的粘包问题。
App的通信协议般是使用TCP协议,TCP协议是种面向连接、流,提供可靠服务的协议。
当网络上的数据包到达接收端后,程序会根据预先设置的缓冲区大小取数据。在图9 8中,假设用户缓冲区为15字节,当第1个数据包(10字节)和第2个数据包(10字节)到达接收端后,程序根据缓冲区的大小(15字节)取数据,这样缓冲区的数据包含了第1个数据包的全部数据(10字节)和第2个数据包的部分数据(5字节).当把缓冲区的数据取出,其包含了第1个数据包的全部数据和第2个数据包的部分数据,于是产生粘包问题。粘包产生原理如图9-8所示。
例如第1个数据包的数据“1234567890”,第2个数据包的据“012345678”,从缓冲区取出全部数据后为“123456789001234”,如果没有明显的标识,程序根本不知道怎么在缓冲区中获取第1个包的数据。解决这个问题的通用方案是制定合理的脚泼格式,在每个数据包中标明这个包的长度,这样程序就能准确理解和处理包的数据
APP开发公司程序员下面介绍的一种MySQL通信协议格式,其不但解决了粘包的问题,而且都是高效的通信协议格式。
MySQL协议格式
MySQL协议中一个数据包的前3个字节是数据包长度,第4个字节是数据包的序列号,剩下的字节是数据,如图9-9所示。
APP开发聊天功能通信9-9 MySOL协议格式
MySQL协议通过在数据包头标明了数据包长度,程序就能在缓冲区通过截取正确的数据长度来获取个数据包。好了,APP开发公司本文关于在制作APP聊天功能对于MySQL数据库通讯协议处理的方法与流程就介绍到这里,谢欢本站的朋友请持续关注本站。谢谢,博纳网络编辑整理。