赞
踩
即时通讯(IM:Instant Messaging):又称实时通讯,支持用户在线实时交谈,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。
即时通讯在开发中使用的场景有许多,如 AOL、Yahoo IM、MSN、QQ 以及微信等聊天软件,在电商 APP 集成买家与卖家的实时沟通等。它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议,协议是用来说明信息在网络上如何传输。
如果有了统一的传输协议,那么应当可以实现各个 IM 之间的直接通讯,为了创建即时通讯的统一标准,人们多次努力,试图统一各大主要 IM 供应商的标准(AOL、Yahoo 及 Microsoft),但无一成功,且每一种 IM 仍然继续使用自己所拥有的协议。目前已经出现过的 IM 协议包括:
当前实现即时通讯的方案:
1、XMPP 诞生的由来
2、XMPP 起源
最初 XMPP 作为一个框架开发,目标是支持企业环境内的即时消息传递和联机状态应用程序。
XMPP 的前身是 Jabber(1998 年),是一个开源组织定义的网络即时通信协议。
XMPP 是一个分散型通信网络,这意味着,只要网络基础设施允许,任何 XMPP 用户都可以向其他任何 XMPP 用户传递消息。
多个 XMPP 服务器也可以通过一个专门的 “服务器-服务器” 协议相互通信,提供了创建分散型社交网络和协作框架的可能性。
XMPP 协议曾经是 Google 力推的即时通信协议,其代表作品是 GTalk。
3、XMPP 概述
XMPP:The Extensible Messaging and Presence Protocol,可扩展通讯和表示协议,是一种基于 XML 的即时通讯协议,用于即时消息以及在线现场探测。
XMPP 规范了用于即时通信在网络上的数据传输格式,它的核心是 XML 流传输协议的定义,可用于服务类实时通讯、表示和需求,响应服务中的 XML 数据元流式传输。
使得 XMPP 能够在一个比以往网络通信协议更规范的平台上。借助于 XML 易于解析和阅读的特性,使得 XMPP 的协议能够非常漂亮。
XMPP 包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能。
促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
XMPP 是一个典型的 C/S 架构,基本的网络形式是客户端通过 TCP/IP 连接到服务器,通过 Socket 建立连接(目的是为了保持长连接),然后在之上传输 XML 流。
XMPP 以 Jabber 协议为基础,而 Jabber 是即时通讯中常用的开放式协议。
XMPP 的技术规格已被定义在 RFC 3920 及RFC 3921,文档定义了登录,退出,获取好友,发送消息等等的 XML 数据传输协议。
XMPP 的扩展协议 Jingle 使得其支持语音和视频,目前 iOS 尚不支持。
C/S 和 P2P 基本结构图
XMPP 是一个典型的 C/S 架构。
而不是像大多数即时通讯软件一样,使用 P2P 客户端到客户端的架构。
也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的。
优点:采用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行。
XMPP 中定义了三个角色:客户端,服务器,网关。
通信能够在这三者的任意两个之间双向发生。
服务器:同时承担了客户端信息记录,连接管理和信息的路由功能。
网关:承担着与异构即时通信系统的互联互通,异构系统可以包括 SMS(短信),MSN,ICQ 等。
基本的网络形式,单客户端通过 TCP/IP 连接到单服务器,然后在之上传输 XML 流。
节点连接到服务器。
服务器利用本地目录系统中的证书对其认证。
节点指定目标地址,让服务器告知目标状态。
服务器查找、连接并进行相互认证。
节点之间进行交互。
XMPP 应用传输的是与即时通讯相关的指令。
XMPP 传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了 XML 格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。
XMPP 的核心部分就是一个在网络上分片段发送 XML 的流协议。这个流协议是 XMPP 的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议,可以说 XMPP 用 TCP 传的是 XML 流。
XMPP 是一种类似于 HTTP 协议的一种数据传输协议。
XMPP 核心文件是基于 TCP 的 XML 流的传输,XMPPFrame 框架是通过代理的方式实现消息传递的。
XMPP 客户端获取到服务器发送过来的好友消息,客户端需要对 XML 进行解析,使用的解析框架的 KissXML 框架,而不是 NSXMLParser/GDataXML。
为了简化开发,XMPP 的引用程序通常会将 XMPPStream 放置在 AppDelegate 中,以便于全局访问。
每个 XMPP 客户端用户必须拥有一个全局惟一标识符。
客户端和服务器节点,被统称为 XMPP 实体,都拥有 JID。例如:SomeCorp 公司的员工 John Doe 可能拥有 JID:用户名@服务器名称
。
John.Doe@somecorp.com
,其中 somecorp.com 是 SomeCorp 公司的 XMPP 服务器的地址,John.Doe 是 John Doe 的用户名。1、优点
2、缺点
开发架构:
iOS 框架:XMPPFramework
服务器:Openfire
数据库:MySQL
环信是一个第三平台,提供即时通信(IM:Instant Messaging)的服务。
环信使用的是 XMPP 协议,它是在 XMPP 的基础上进行的二次开发,对服务器 Openfire 和客户端进行功能模型的添加和客户端 SDK 的封装。
环信的本质还是使用 XMPP,基于 Socket 的网络通信,在网络上传输的数据也是 XML。
环信内部实现了数据缓存,会把聊天记录添加到数据库,把附件(如音频文件,图片文件)下载到本地,使程序员更多时间是花到用户即时体验上。
环信内部已经实现了视频,音频,图片,其它附件发送功能。
环信使用公司可以节约时间成本,不需要公司内部搭建服务器,环信日活动量在 30 万以下,永远免费。
客户端的开发,使用环信 SDK 比使用 XMPPFramework 更简洁方便。
公司如要开发即时通讯软件,建议首选环信,环信占用市场份额较大。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。