Skip to content

IM Introduction

IM 即时通讯技术 介绍

应用场景

即时通信的常用应用场景:即实时性要求高的场景,常见的如下: 视频会议、聊天、私信 弹幕、抽奖 互动游戏 协同编辑 股票基金实时报价、体育实况更新、 基于位置的应用:Uber、滴滴司机位置 在线教育 智能家居

基本的发展阶段

轮询-》长轮询-》长连接

注意长短连接与长短轮询的区别 概念范畴:长短轮询是应用层概念、长短连接是传输层概念 协商方式:一个 TCP 连接是否为长连接,是通过设置 HTTP 的 Connection Header 来决定的,而且是需要两边都设置才有效。而一种轮询方式是否为长轮询,是根据服务端的处理方式来决定的,与客户端没有关系。 实现方式:连接的长短是通过协议来规定和实现的。而轮询的长短,是服务器通过编程的方式手动挂起请求来实现的

数据传输格式

自定义二进制 开源协议:protocol buffers 文本协议(json\xml)

常见的实现方式

  1. 基于Scoket:代表框架:CocoaAsyncSocket
  2. 基于WebScoket: SocketRocket
  3. 基于MQTT: MQTTKit
  4. 基于XMPP: XMPPFramework
名称协议举例优点缺点
SocketSocket+protocol buffers
WebScoketWebScoket+json高效、节约流量(比如使用protocol buffers,或压缩json格式),ios Android web三端通用对设计者要求高
MQTT协议简单,流量少、订阅+推送模式并不是专门为IM设计的协议,多用于推送
XMPPScoket+xml开源、可扩展性强、方便接入XML表现力差、额外信息多、流量耗费大

重连机制

TCP KeepAlive机制心跳机制
检测连接的状态检测通信双方的存活状态
在定时的时间(一般为7200s)到后, 发送相应的KeepAlive探针,
失败后重试10次,每次超时时间75s通常可设置3-5min发Ping

date: 2017-11-27 16:00:00 author: "Gao Fei"

Released under the MIT License.