im即时通讯开发:移动端需要面对的问题

本文探讨了移动端即时通讯(IM)开发面临的选择,包括P2P与服务器中转的通讯方式,TCP长连接与HTTP短连接的网络技术,以及XMPP、SIP、MQTT和私有协议的优缺点。此外,还提到了协议加密、快速连接、心跳机制、消息可达性和文件上传优化等关键问题。

统一介绍下一个IM APP的方方面面,包括技术选型(包括通讯方式,网络连接方式,协议选择)和常见问题。

P2P还是服务器中转?

IM通讯方式无非两种选择:设备直连(P2P)和通过服务器中转。

1P2P方式

P2P多见于局域网内聊天工具,典型的应用有:飞鸽传书、天网Maze(你懂的)等。这类软件在启动后一般做两件事情:

    进行UDP广播:发送自己信息和接受同局域网内其他端信息;

    开启TCP监听:等待其他端进行连接。

详细的流程可以参考飞鸽传书源码。但是这种方式在有种种限制和不便:一方面它只适合在线的点对点消息传输,对离线,群组等业务支持不够。另一方面由于 NAT 的存在,使得不同局域网内机器互联难度大大上升,在某些网络类型(对称NAT)下无法建立连接。

2服务器中转方式

几乎所有互联网IM产品都采用服务器中转这种方式进行消息传输,相对于P2P的方式,它有如下的优点:

    能够支持更多P2P无法支持或支持不好的业务,如离线消息,群组,聊天室服务;

    方便业务逻辑的拓展和新旧版本的兼容。

当然它也有自己的问题:服务器架构复杂,并发要求高。

该选择什么样的网络通讯技术?

IM主流网络通讯技术有两种:

    基于TCP的长连接;

    基于HTTP短连接PULL的方式。

后者常见于WEB IM系统(当然现在很多WEB IM都是基于WebSocket实现),它的优点是实现简单,方便开发上手,问题是流量大,服务器负载较大,消息及时性无法很好地保证,对大规模的用户量支持不够,比较适合小型的IM系统,如小网站的客户系统。

基于TCP长连接则能够更好地支持大批量用户,问题是客户端和服务器的实现比较复杂。当然也还有一些变种,如下行使用MQTT进行服务器通知/消息的下发,上行使用HTTP短连接进行指令和消息的上传。这种方式能够保证下行消息/指令的及时性,但

可以用此函数库开发一个即时通讯的客户端,可以支持语音,视频。所有的功能都已经封装好了,是需要调用即可。 上层可以使用java,C#等高层语音开发,也可以使用C++。 1 概述 5 2 Xmrtc模块说明 5 2.1 Xmrtc主要功能: 5 2.2 调用规范 6 2.3 基础 6 2.4 运行环境 7 2.5 呼叫过程说明 7 2.6 电话会议说明 8 2.7 SIP消息跟踪 8 3 接口调用说明 8 3.1 调用规范 9 3.2 定义和应用资源 9 3.3 回调函数(CALLBACK)的安全性 9 3.4 避免指针被回收 10 4 xmrtc接口说明 11 4.1 获取版本号 11 4.2 设置日志过滤级别 11 4.3 写日志 12 4.4 系统初始化 12 4.5 系统终止请求 13 4.6 设置登录用户 13 4.7 登录 14 4.8 注销 14 4.9 设置回调函数 15 4.9.1 设置音频音量CALLBACK 15 4.9.2 设置系统退出CALLBACK 16 4.9.3 设置电话呼入CALLBACK 17 4.9.4 设置电话回铃CALLBACK 18 4.9.5 设置呼叫保持CALLBACK 18 4.9.6 设置呼叫连接成功CALLBACK 19 4.9.7 设置呼叫结束CALLBACK 20 4.9.8 设置媒体变化CALLBACK 20 4.9.9 设置注册状态CALLBACK 21 4.9.10 设置状态变化CALLBACK 22 4.9.11 设置响度CALLBACK 23 4.10 呼叫相关命令 24 4.10.1 发起呼叫 24 4.10.2 接受一个呼叫 24 4.10.3 结束呼叫 26 4.10.4 呼叫保持 26 4.10.5 发送DTMF音 27 4.11 设置音频音量 28 4.12 设置音频静音 28 4.13 设置用户登录信息对话框 29 4.14 设置调节向导 30 4.15 获取当前音量 30 5 状态同步接口 31 5.1 CDR模块初始化 31 5.2 强拆远程会话 35 5.3 强插远程会话 35 5.4 转移当前会话 36 5.5 Agent名称设置 37 5.6 获取视频接口 37 5.7 播放铃声 39 5.8 用户置忙置闲 40 5.9 获取用户状态 41
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值