自己动手实现即时通信协议设计

本文探讨了即时通信协议的设计,选择了TCP长连接确保时效性和可靠性。报文格式设计注重短报文头、负载分段和数据描述。协议包括握手验证、数据包传输、流数据传输和心跳协议。数据封包和解包通过序列化和反序列化确保跨平台兼容性。
摘要由CSDN通过智能技术生成

文:徐江威

协议选择

即时消息有两个主要特性:时效性和可靠性。

一般的,为了客户端能及时的接收到消息,并且控制功耗,长连接是首选的连接方式。同样的,为了保证消息的可靠接收,TCP 协议是优先的选择。

 

报文格式设计

确定了采用 TCP 长连接协议之后,我们需要为我们的协议设计封包格式。

我们明确三点封包设计原则:

  • 短报文头
  • 报文负载可被分段
  • 报文数据可被描述

首先,即时通信数据报文类型大概7到8种即可描述所有主要的通信业务,因此可以使用短报文头来携带报文分类和索引信息,而业务层需要的数据由负载携带而不由报文头携带,这样既能为业务层提供足够的灵活性的同时保证较小的报文结构。

其次,报文负载应该能携带多个数据段,每个数据段可以独立的描述一组数据,从而实现多数据端被封包在一个报文里。

最后,为了兼容不同的操作系统和平台,在进行数据序列化时,需要对不同的数据类型进行对应的序列化方式,而不同的数据类型在每个平台上支持程度不一,例如,浮点数的处理,在 JVM 里的处理和在浏览器里使用 JavaScript 处理就有明显差异。因此,对数据进行必要的描述以便在不同平台之间平滑的描述数据。

|--|-00-|-01-|-02-|-03-|-04-|-05-|-06-|-07-|
|--|---------------------------------------|
|01| VER| SN |         RES       |    PN   |
|--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值