
即时通讯软件开发(最简单的即时通讯软件)
企业开发即时通讯软件时,如何选择网络通讯协议和机制?
如果一个大型组织需要从头开发一套自控即时通讯软件,从技术角度考虑的第一个核心问题是如何确定客户端和服务器之间的通信协议和通信机制。
通讯协议怎么选?
大规模的组织结构意味着员工多,网络情况复杂。以10万账号的组织规模为例,由于员工办公环境的多样性,内部必须有高速网络、手机网络、Wifi网络等强弱网络的组合。
如果只考虑内部高速网络的使用场景,XMPP是一个值得考虑的选择。它具有开放标准、分布式设计、安全性好、可扩展性高的优点,几乎兼顾了客户端和服务器之间网络通信的各个方面。
但是XMPP,通信网络多样复杂,也有一些缺点,比如XML格式的协议包过于臃肿,浪费网络流量,对移动网络不友好,占用太多服务器带宽资源。
因此,考虑到大型组织的使用场景和用户数量,我们建议使用谷歌的协议缓冲区(protobuf)技术对数据包进行编码和解码。
原因如下:
即时通讯过程中的登录、状态通知、消息通知等三五个核心协议的制定和入门相对简单。
扩展性好,protobuf的IDL语法支持协议包的前向兼容,也为以后的扩展预留了空间;
Protobuf的协议包为二进制格式,编解码速度快,数据压缩率高,可以提高移动网络传输的成功率,有效减少对服务器带宽的占用。
典型的网络通信协议包如下:
典型的网络通讯协议数据包
对于协议包的加密和解密,一般有两种选择,一种是用自定义的算法对每个数据包进行加密和解密,另一种是使用TLS标准来控制基于证书的加密和解密算法和密钥机制。
大多数即时通讯软件都会选择TLS标准方案,因为自定义算法固化了加解密算法和密钥交换机制,难以调整和修改,没有充分考虑时会存在安全隐患。
开放标准TLS协议可以更改证书
通讯机制怎么选?
传统IM通常选择TCP长连接,客户端和服务器之间的所有通信都是通过长连接进行的。
但是,TCP长连接有一些缺点,例如:
移动设备的网络连接不稳定,不同网络之间的切换会频繁,通过简单的TCP通道传输数据会频繁中断,说明消息的发送总是在原地转圈等待,使用体验不好;
TCP顺序传输的吞吐能力有限,需要严格按照时间顺序向服务器发送请求。对于大型组织来说,如果服务器没有及时响应一个请求,会导致后续的请求被挤压,说明服务不可用,从而影响日常工作效率;
从简单可靠的角度出发,我们建议采用TCP HTTP传输方式:
采用TCP作为加密(TLS1.2)传输通道,数据协议基于protobuf设计,轻服务模式。主要用于:登录、消息通知、状态变更等场景;
HTTPS是服务传输通道,接口是RESTful,参数是JSON数据格式。
TCP+HTTP的传输方式
这样做的好处是:
采用HTTP协议发送消息,网络连通性的连续性不高,可以充分降低网络切换对数据传输的影响;
将服务器端成熟的HTTP服务系统引入到后端开发中,达到服务开发流程简单高效的目的;
客户端快速切换接口时,可以取消前一个接口生成的HTTP请求,减少服务器的无效资源消耗;
充分引入HTTP服务开发领域成熟、高可用的解决方案,满足大型组织通信平台的使用需求。
结语
通信协议和机制是即时通讯系统的基础。对于一个大型组织来说,它影响着系统未来的开发效率、健壮性、可维护性和可扩展性。
也许你已经猜到了,这就是我们即时通讯系统采用的通讯协议和机制。如果您想与我们深入讨论技术架构或充分了解即时通讯系统的解决方案,您可以随时。
下一篇:免费全套模板(vi模板全套下载)