基于xmpp协议的多端即时通讯方案

Android即时通讯应用开发:基于XMPP协议项目实战 本文还有配套的精品资源,点击获取 简介:本项目涉及在Android平台上利用XMPP即时通讯协议构建聊天应用。XMPP是一种开放标准,支持多种实时通讯场景。我们将深入探索如何使用Smack库来实现用户连接、消息发送接收、群组管理等功能,并讨论如何设计UI和处理导航,最终构建一个具备聊天、群聊及用户头像展示等功能的应用。 1. XMPP协议基础及应用 1.1 ... 阅读详情

基于XMPP协议的手机多方多端即时通讯方案................................................................. 1

目   录.................................................................................................................... 2

一、 开发背景.......................................................................................................... 3

1、       国际背景................................................................................................. 3

2、       国内背景................................................................................................. 3

3、       为什么选择XMPP协议.............................................................................. 3

二、 Xmpp协议介绍................................................................................................ 5

1、 Xmpp协议概述............................................................................................. 5

2、 Xmpp协议内容............................................................................................. 5

3、 Xmpp协议优点............................................................................................. 5

4、 Xmpp协议缺点............................................................................................. 6

5、 Xmpp提供电子名片协议............................................................................... 6

6、 XMPP系统特点............................................................................................. 7

三、 服务器端介绍................................................................................................... 7

1、       什么是Openfire...................................................................................... 7

2、       为什么使用Openfire............................................................................... 7

3、       Windows下搭建服务器............................................................................. 7

4、       Linux下搭建服务器................................................................................. 7

5、Mac下搭建服务器......................................................................................... 8

四、 客户端介绍...................................................................................................... 8

1、       手机客户端.............................................................................................. 8

2、Pc客户端.................................................................................................... 10

2、       Web客户端............................................................................................. 12

五、 环境搭建........................................................................................................ 13

1、       安装JDK................................................................................................ 13

2、       安装OpenFire........................................................................................ 13

3、       安装Mysql............................................................................................. 14

4、       安装Apach Tomcat................................................................................. 14

5、       配置环境............................................................................................... 14

6、       安装项目............................................................................................... 14

7、       设置服务器地址..................................................................................... 15

8、       注册用户............................................................................................... 15

9、       进行相对应的操作................................................................................. 16

六、项目演示.......................................................................................................... 16

1、服务器端设置.............................................................................................. 16

2、客户端设置................................................................................................. 19

七、多方、多端即时通讯........................................................................................ 21

1、QQ、FaceBook、Twitter、MSN Messenger、Yahoo Messenger、AIM、Gadu-Gadu、ICQ、Google Talk、Popo 21

2、PC、Pad、Phone、Web................................................................................ 21

八、解决方案.......................................................................................................... 21

1、一个应用程序,多类型账户可同时登陆。.................................................... 21

2、一个应用程序,一个账户可以和其他类型的账户好友聊天。........................ 23

九、全文概要图...................................................................................................... 24

一、开发背景

1、国际背景

随着Internet技术的高速发展,即时通信已经成为一种广泛使用的通信方式。1996年Mirabilis公司推出了世界上第一个即时通信系统ICQ,不到10年间,即时通信(Instant Messaging,简称IM)以发展成为了最流行的网络应用之一。特别是近几年的迅速发展,即时通信的功能日益丰富,它不再是个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、音乐、电视、游戏、电子商务等为一体的综合化信息平台。

2、国内背景

目前国内外及时通信软件IM(Instant Messenger )形势风起云涌,可谓战况空前,IM作为继Email和Web之后最主要的互联网基础应用之一,为商家必争之地。国内的形势由于QQ的垄断性优势明显,表 面稍显平静,实则暗流涌动。目前来看,胖企鹅公司以压倒性优势占据了国内IM市场近八成份额,并且紧紧抓住低端市场,用户数量庞大,盈利丰厚。其他的IM 微软MSN(WLM)、网易POPO、新浪UC、TOM Skype、Google Gtalk等占有率较为惨烈,还有雅虎即时通、AIM、ICQ以及传闻中的Baidu IM和搜狐搜Q以及一些目前并不出名的如校内网的校内通,Lava-lava等等等等,凡在国内叫得上号的叫不上号的互联网企业,几乎没有不推IM的,甚 至连中国移动都力推飞信,希望分得一杯羹。然而这些即时通讯不能实现互联互通,限制了用户的扩展。

3、为什么选择XMPP协议

虽然现在即时通信软件有很多,但是它们之间不能互联互通也阻碍了及时通信用户的继续扩展。因此,在现阶段的各种即使通信服务,没有统一的标准,无法实现互联互通的局面下,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互通。有了这个协议之后,使用任何一个组织或者个人提供的即使通信服务,都能够无障碍的与其他的及时通信服务的用户进行交流。例如google 公司2005年推出的Google talk就是一款基于XMPP协议的即使通信软件。

目前IM即时通信有四种协议:

1.即时信息和空间协议(IMPP)

2.空间和即时信息协议(PRIM)

3.针对即时通讯和空间平衡扩充的进程开始协议SIP

4.XMPP协议:该协议的前身是Jabber,我们采取XMPP协议主来实现IM主要是考虑XMPP协议是以XML为基础的,它继承了在XML环境中灵活的发展性。这表明XMPP是可扩展的,所以XMPP信息不仅可以是简单的文本,而且可以携带复杂的数据和各种格式的文件,也就是说XMPP协议不仅可以用在人与人之间的交流,而且可以实现软件与软件或软件与人之间的交流,目前支持XMPP协议的即时通讯工具有Gtalk、FaceBook IM、Twitter、网易POPO等等通讯工具,具有非常好的发展情景。

正如任何事物都有其自身的发展规律一样,技术和产品的进步也有其自身的规律。

从萌芽到混乱最终标准化,这是互联网产品的基本规律。IM跟其实发展自Email,跟Email有着很多共同点。让我们来对比一下Email目前的情况,或许会有些启示。Email现在已经被广泛应用,谁都不能质疑其互联网第二应用的地位(第一应用是Web)。 Email之所以能广泛地被应用最关键的原因应该是Email有一套开放标准的协议规范(包括SMTP、POP、IMAP 等),任何人都可以基于这些协议规范开放自己的Email产品,不管是Email服务器也好,Email收发客户端也罢还是现在颇为流行的Web形式的 Email界面,它们都是基于同一套标准。在这套标准的框架下,各个Email相关厂商都各自占据产业链的相应位置,相互合作相互竞争,这才是一个百花齐 放的健康竞争环境,而且这种健康竞争最终受益者还是广大用户。

XMPP(www.xmpp.org)由Jabber软件基金会开发,最早在Jabber上实现。Jabber项目由Jeremie Miller在1998年开始的一个免费、开源的项目,用于提供给MSN、Yahoo!的IM服务。由于XMPP是一种基于XML架构的开放式协议,在IM通讯中被广泛采用。

XMPP的基础部分已经在2002-2004年得到了互联网工程任务组(IETF)的批准, 这意味着XMPP在将来就像我们认为理所当然的Internet协议TCP/IP、HTTP、FTP、SMTP、POP一样成为Internet标准;这 意味着以后我们就像使用Web、使用Email和使用FTP一样开放地使用IM。甚至若干年后人们会理所当然地认为163的邮箱可以给Hotmail发邮 件一样,QQ用户也可以添加Gtalk用户,人们会逐渐忘却当年军阀割据纷乱的历史。这是一种革命性的进步!不支持XMPP的IM将会像IBM的 Token-Ring一样孤芳自赏或者像DEC NET协议一样被人遗忘。遥想当年DEC NET和IBM Token-Ring也是多么意气风发羽扇纶巾啊!

在XMPP被批准之前,世界上已经存在了数十种支持XMPP的服务器端和客户端以及数百万用 户。嗅觉灵敏的Google作为开放源代码社区和开放标准的最大受益者,第一时间感受到了这种趋势,所以花重金将Gaim的作者挖去Google,于是就 有了基于XMPP的Gtalk。

开放的标准协议会导致产品的竞争更为健康和良性,整个产业链更为完善。当然产品之间的竞争唯 一的趋势就是同质化,产品发展到后期比拼的只有服务。这一点在传统产业已经被完全验证,互联网产业也不能逃脱。至于到时用户是选Gtalk呢还是选 POPO呢,就像用户现在选Gmail还是163的邮箱一样,可以各有所好。不过IM在扩展功能以及增值服务上还有非常大的竞争余地。

二、Xmpp协议介绍

1、Xmpp协议概述

XMPP(Extensible Messaging and Presence Protocol,前称Jabber[1])是一种以XML为基础的开放式实时通信协议,是经由互联网工程工作小组(IETF)通过的互联网标准。

XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发 送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

可扩展消息处理现场协议(eXtensible Messaging and Presence Protocol , XMPP) 是一种基于可扩展标记语言(eXtensible Markup Language, XML)的近端串流式即时通信协议。它将现场和上下文敏感信息标记嵌入到XML 结构化数据中, 使得人与人之间、应用系统之间以及人与应用系统之间能即时相互通信。XMPP 协议已被批准为互联网即时通信协议标准。

2、Xmpp协议内容

XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。

3、Xmpp协议优点

开放—XMPP协议是自由、开放、公开的,并且易于了解。而且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。

标准—互联网工程工作小组(IETF)已经将Jabber的核心XML流协议以XMPP之名,正式列为认可的实时通信及Presence技术。而XMPP的技术规格已被定义在RFC 3920及RFC 3921。任何IM供应商在遵循XMPP协议下,都可与Google Talk实现连接。

证实可用—第一个Jabber(现在XMPP)技术是Jeremie Miller在1998年开发的,现在已经相当稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运作著,并有数以百万计的人们使用XMPP实时传讯软件。

分布式—XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。

安全—任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。

可扩展—XML命名空间的威力可使任何人在核心协议的基础上建造客制化的功能;为了维持通透性,常见的扩展由XMPP Standards Foundation。

弹性佳—XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。

多样性—用XMPP协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各种领域;用XMPP技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。

4、Xmpp协议缺点

数据负载太重:随着通常超过70%的XMPP协议的服务器的数据流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的数据提供给多个收件人。新的议定书正在研究,以减轻这一问题。

没有二进制数据:XMPP协议的方式被编码为一个单一的长的XML文件,因此无法提供修改二进制数据。因此, 文件传输协议一样使用外部的HTTP。如果不可避免,XMPP协议还提供了带编码的文件传输的所有数据使用的Base64。至于其他二进制数据加密会话(encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。

5、Xmpp提供电子名片协议

vCard是一种现存的、广泛使用的,用户个人信息存储的标准,有点像是电子名片。基础的功能是存储和获取用户的电子身份,该信息是用XML表示的,数据的存储取决于所有现存的Jabber服务器的实现。

6、XMPP系统特点

客户机/服务器通信模式、分布式网络、简单的客户端、XML的数据格式。

三、服务器端介绍

1、什么是Openfire

Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。您可以使用它轻易的构建高效率的即时通信服务器.

Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。

  由于是采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登陆服务.

2、为什么使用Openfire

A、Openfire为Java开源项目

B、 采用开放的XMPP协议

C、 有多种针对不通系统的版本

D、使用Socket通讯

E、 单台服务器可支持上万并发用户,搭建分布式云服务器可轻松提供大量并发用户。

F、 Socket长连接

G、服务器稳定

H、提供接口,可自己开发插件

3、Windows下搭建服务器

JDK1.6 + Openfire For Windows + Mysql5.5 + Tomcat6

4、Linux下搭建服务器

JDK1.6 + Openfire For Linux + Mysql5.5 + Tomcat6

5、Mac下搭建服务器

四、客户端介绍

1、手机客户端

A、ForAndroidClient

手机登录界面

手机IM联系人列表

手机用户与PC客户端用户聊天

手机用户与Web端用户聊天 


B、ForMobileClient

C、  ForIphoneClient

D、  ForSymbian

E、ForWp7

2、Pc客户端

A、SparkForJava(OpenSource)

 

PC端用户登录界面

PC端IM联系人界面列表

PC端用户与手机端用户聊天界面

PC端用户与Web端用户聊天

B、SparkForC# (OpenSource)

2、Web客户端

A、RIA (Flex   And   Silverlight)

B、 Html5

C、Web2.0

Web端登录

 

Web端与PC聊天

Web端与手机端聊天

五、环境搭建

1、安装JDK

下载官网的JDk,并且正常安装,待安装完成后设置环境变量。

2、安装OpenFire

下载Openfire,并正常默认安装。

3、安装Mysql

下载安装Mysql,指定Mysql的用户名和密码,以及数据库使用的编码。确定是否允许远程访问该数据库。

4、安装Apach Tomcat

下载Apach基金会下的Tomcat服务器,并且解压安装。

5、配置环境

登陆Openfire服务器控制台,设置相关的信息。如:端口,插件等。

并将项目部署到Apach tomcat中。

6、安装项目

1、  ForAndroid

从Tomcat中下载android的项目XmppClientForAndroid.apk,并在手机中安装。

2、  ForPc

从Tomcat中下载Pc的项目 Spark.exe,并在手机中安装。

3、  ForWeb

打开Tomcat中的项目,直接运行登陆。

点击运行后:

7、设置服务器地址

ForAndroid、ForPc、ForWeb 都提供了个服务器地址设置的地方。默认Openfire的端口为5222.(除,Silverlight 的端口必须为 4502-4532)

8、注册用户

可以在服务器端直接注册用户,也可以在客户端注册用户。

9、进行相对应的操作

相对应的即时通讯方面的操作。

六、项目演示

1、服务器端设置

A、Openfire 控制台

 

服务器主界面:

控制台主界面:


 

控制台内部管理:


用户/组管理:

会话管理:


聊天管理:


 

 

A、Mysql数据库

 

 

数据库表结构:

 

2、客户端设置

A、ForAndroid

 

B、ForPc

 

 

C、ForWeb

 

七、多方、多端即时通讯

1、QQ、FaceBook、Twitter、MSN Messenger、Yahoo Messenger、AIM、Gadu-Gadu、ICQ、Google Talk、Popo

研读不同的通信协议,将Internet中常用的IM集成在一起,使得用户在操作系统中不必安装太多的聊天软件。

2、PC、Pad、Phone、Web

用户可以通过PC、Pad、Phone、Web等任意一个client聊天。

八、解决方案

1、一个应用程序,多类型账户可同时登陆。

类似于Live Mail,没个账户只能和本账户下的朋友聊天。

有些国外的软件(Palringo、Trillian)以实现该功能.

 

2、一个应用程序,一个账户可以和其他类型的账户好友聊天。

XMPP IM 与非XMPP 的其他IM互联互通方法: 如果对方不是XMPP 体系中的用户, 就要在企业IM服务器上架设协议转换网关。在XMPP 的IM服务器上架设IM协议转换网关, 要遵守RFC3922 协议, 这个协议规定了XMPP 与公共显示和即时消息( CPIM)的映射。这里描述一下一个用户与MSN 用户的交流。在与MSN 用户交流之前, 企业IM用户首先设置一个MSN 用户到XMPP—MSN 协议转换网关上( 告诉MSN 的用户与密码给网关) , 现在网关就可以用这个MSN账号与MSN 系统进行交流了。绑定了MSN 用户的企业IM用户登录企业IM服务器后, 协议转换网关把MSN 账号的好友的MSN 账号返回给用户, 并在里面做了映射, 映射到了本地XMPP 账号。现在用户可以跟与本地XMPP 用户一样, 与MSN 账号的用户进行交流了。

九、全文概要图

 

http://www.iliunian.com/1761.html


atalk-android:适用于Android的xmppjabber客户端 aTalk(Jabber / XMPP) 带有Android的视频通话和GPS功能的加密即时消息传递 特征 aTalk是专为Android设计的xmpp客户端,并支持以下功能: 使用或以纯文本形式进行即时消息传递和端到端加密 SSL证书身份验证,DNSSEC和DANE安全性实现可增强安全的连接建立 群聊会话中的OMEMO加密可增强隐私性和安全性 OMEMO媒体文件共享,适用于所有文件,包括贴纸,Bitmoji和Emoji丰富内容 支持http文件上传,用于与离线联系人和群聊共享文件 通过Google Gboard支持Stickers,Bitmoji和Emoji丰富的内容共享 使用缩略图预览和gif动画发送和接收所有文档类型和图像的文件 自动接受带有最大文件大小选项的文件传输 实施容错文件传输以简化并增强文件共享的可靠性 增强和协调UI,以便在聊天和chatRoom中共享文件 支持在发送 立即下载

相关推荐

基于深度学习的时间序列预测

深度学习在时间序列数据中应用广泛,学术界已经有很多深度学习模型来适应不同领域的时间序列数据集的多样性。那么到底有哪些基于深度学习的时间序列预测模型?他们的优缺点是什么?让我们一起来看一下。

Sharon0408的博客 6580

Android项目实战:基于XMPP的即时通讯(IM)客户端精讲视频课程

本课程使用asmack、openfire等开源Library和软件实现一款基于Android的即时通讯软件。该软件支持普通的文本聊天,文件传输、群聊等功能。并且自己用openfire搭建服务端,通过本课程的学习,学员完全可以自己搭建和编写一个完全属于自己的IM聊天系统。在局域网和Internet都可以,只要自己有一个可访问的服务器即可。

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 209

基于XMPP协议的手机多方多端即时通讯方案

目   录 基于XMPP协议的手机多方多端即时通讯方案................................................................. 1 目   录..................................................................................................

753

涨姿势|小众建模软件Make human,MakeClothes插件使用详解教程(2)

衣服可以从头开始建模,或者通过改变人体网格或由MakeClothes工具提供的“服装助手”(见下文)来建模。在设计和建模一件衣物时,应该记住两个限制。首先,将服装网格映射到人体网格的算法要求服装网格完全由四面体组成。其次,知道MakeClothes每件衣服只支持一种材料是很重要的。 完成MakeClothes工作流程后,您的HOME / makehuman / v1 / data / clothes中的工具将创建一个新文件夹。该文件夹将采用用户为服装项目提供的唯一名称。该文件夹将填充必要的资源,以使该项目在

Crazy_in_3Dmax的博客 1874

MT4-EA自动化交易研究笔记(2022-04-22)

自从接触到mt4的EA自动化交易,更让我这个10多年的老程序员看到了曙光,目前来看也确实出了一点成果,只是是否能稳定盈利有待时间的考验,所以开此专栏,一来做做记录与分析,更好的优化我的EA,二来也希望能与更多的高手交流,以完善我的交易系统

t35254056的博客 2290

常用的XMPP客户端软件

http://wiki.jabbercn.org/XMPP%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%AF%E4%BB%B6

duan19056的专栏 1691

C#与Vector XL驱动库实战:CAN通道配置与端口访问详解

本文详细解析了使用C#调用Vector XL驱动库进行CAN总线通信开发的核心步骤。重点阐述了如何通过XL_GetDriverConfig获取硬件通道信息,并厘清channelMask与accessMask的区别与转换关系,最终指导开发者正确使用XL_OpenPort函数配置并打开CAN端口,为构建稳定的汽车电子测试与诊断应用奠定基础。

weixin_28452161的博客 361

xmpp版即时聊天

1.即时聊天简单介绍,socket通信 1.即时聊天的解决方案 * socket: * xmpp:xmpp+openfire+asmack 2.环信--------即时通讯云领导者:http://www.easemob.com/ 3.socket:套接字,连接需要`ip`和`端口`,分为tcp和udp两种形式      代码   2.xmpp协议的介绍

LLLigj博客 6098

模型优化系列——模型剪枝/量化概述

模型优化目的:通过减少模型大小,提高推理速度等使模型成功部署在各个硬件中并实时有效运作。

qq_61210574的博客 1293

优化相机姿态和三维点云的Bundle Adjustment算法及其编程实现

重投影误差是指将优化后的相机姿态和三维点云投影到图像平面上,与对应的图像特征点之间的距离。Bundle Adjustment(捆绑调整)是一种用于同时优化相机姿态和三维点云的算法,它可以提高三维重建和相机定位的精度。下面是一个简单的Python示例代码,演示了如何使用Bundle Adjustment算法优化相机姿态和三维点云的参数。通过以上步骤,Bundle Adjustment算法可以不断地优化相机姿态和三维点云的参数,从而提高重建和定位的精度。Bundle Adjustment算法的编程实现。

CyberXZ的博客 740
上一篇: iOS开发常用开发者网站
下一篇: iOS 基于键盘的编程
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值