搭建基于XMPP的即时通讯系统

XMPP Client Daemon:打造开源即时通讯应用 本文还有配套的精品资源,点击获取 简介:XMPP是一种开放标准的即时通讯协议,基于XML技术。XMPP Client Daemon(XCD)作为一个开源的客户端守护进程,允许开发者构建跨平台的Jabber协议应用程序。XCD支持连接管理、身份验证、会话管理、资源绑定、消息传递、实体发现、presence管理等关键功能,并遵循XMPP的扩展性原则,支持XEP家族的功能。开发者... 阅读详情

1 参考资料

2 即时通讯的相关知识

2.1 即时通讯的概述

即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能,常见的即时通讯工具有QQ、微信等。然而如果要搭建一个即时通讯系统,离不开即时通讯协议,今天要介绍的是基于XMPP协议的即时通讯系统。

即时通讯协议就是即时通讯系统在通讯时所需要遵循的规范,它定义了一些标准化的通讯数据格式和网络架构等。

即时通讯的常用协议
  1. 即时信息和空间协议(IMPP)
  2. 空间和即时信息协议(PRIM)
  3. 针对即时通讯和空间平衡扩充的进程开始协议(SIP)
  4. 可扩展通讯和表示协议(XMPP)
  5. 私有协议(自定义协议):为了更满足特定的需求和安全性,有些开发者会重新定义一套协议,这个成本是非常巨大的,一般是大厂干的事(例如腾讯)。

2.2 XMPP的相关知识

2.2.1 XMPP的定义

XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它继承了在XML环境中灵活的发展性,可用于实时消息传递、呈现和请求/响应业务。XMPP使用TCP传输XML数据流,属于应用层协议,而非传输层协议。XMPP官网   XMPP中文

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

资料:即时通讯协议的选型之XMPP

2.2.2 XMPP的基本网络结构

XMPP中定义了三个角色,客户端,服务器,网关。

  • 服务器:同时承担了客户端信息记录,连接管理和信息的路由功能。
  • 网关:一个特殊用途的服务器端的服务,主要功能是把xmpp翻译成外部消息系统,并把返回的消息翻译成xmpp。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在其之上传输XML。
  • 客户端:通过TCP连接直接连接到服务器,并通过xmpp获得由服务器以及联合服务器所提供的全部功能。多个不同的客户端可以同时登陆并且并发的连接到一个服务器,每个不同资源的客户端通过xmpp地址的资源标识符来区分。
2.2.3 XMPP的通讯原理

XMPP通讯过程中传输的是与即时通讯相关的指令。只是协议的形式变成了XML格式的纯文本。

  1. Client1连接到服务器;
  2. 服务器利用本地目录系统中的证书对其认证;
  3. Client1指定目标Client2地址,让服务器告知目标状态;
  4. 服务器查找、连接并进行相互认证;
  5. Client之间(Client1与Client2)进行交互。

下面是一个XMPP通讯过程示例:

客户端(minstone)连接到一个XMPP服务器(127.0.0.1:5222/TCP),发送一条消息“Bye Bye”到另一个客户端(test),然后注销。

  • 1.客户端(minstone)发送连接请求到服务器

客户端:

<?xmlversion='1.0'?>
<stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="127.0.0.1">
  • 2.服务器对请求应答

服务器:

<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'
from='127.0.0.1' id='1461777714'>
  • 3.服务器利用本地目录系统的证书对其认证

客户端:

<iq type="set" id="auth_2" to="127.0.0.1" >
<query xmlns="jabber:iq:auth">
  <username>minstone</username>
  <password>mypassword</password>
  <resource>Work</resource>
 </query>
</iq>
  • 4.服务器将相应的结果返回给用户端

服务器:

<iq from="127.0.0.1" id='auth_2' type='result'/>
  • 5.用户发送消息请求,并注销

客户端:

<message to="test@example.com" >
    <subject>Bye Bye</subject>
    <body>test 1449</body>
</message>
<presence type="unavailable" >
    <status>Logged out</status>
</presence>
</stream:stream>
  • 6.服务器返回注销信息

服务器:

</stream:stream>

以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML Stream(XML流)。在<stream>与</stream>中间的那些<message>...</message>这样的XML元素就是所谓的XML Stanza(XML节点)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一方发信给另外一方。通信的最后阶段是</stream>关闭流。

资料:xmpp基本概念

2.2.4 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命名空间的威力可使任何人在核心协议的基础上建造定制化的功能;为了维持通透性,常见的扩展有支持音视频传输的扩展协议Jingle。
  • 弹性佳:XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。
  • 多样性:用XMPP协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各种领域;用XMPP技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。
2.2.5 XMPP的协议缺点
  • 数据负载太重:随着通常超过70%的XMPP协议的服务器的数据流量的存在和近60%的数据被重复转发,XMPP协议目前拥有一个大型架构中存在的数据提供给多个收件人。目前新的协议正在研究,以减轻这一问题。
  • 没有二进制数据:XMPP协议的方式被编码为一个单一的长的XML文件,因此无法提供二进制数据。因此,文件传输协议一样使用外部的HTTP。如果不可避免,XMPP协议还提供了带编码的文件传输的所有数据使用的Base64。

3 Openfire相关知识

3.1 Openfire的定义

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

Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。由于是采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登录服务。

资料:  官网    github地址  Openfire教程网

3.2 Openfire的安装配置

安装配置过程请参照:Openfire安装教程

配置完成如下:
在这里插入图片描述

3.3 使用Spark登录Openfire

Spark是一款使用java开发的开源即时通讯工具,它可以登录基于XMPP协议搭建的即时通讯服务器并在其之上进行通讯(可理解为精简版QQ)。
spark

登录方式请参考上述Openfire安装教程博客内容,这里不再赘述。

4 Smack的相关知识

4.1 Smack的定义

Smack是一个开源,易于使用的XMPP(jabber)客户端类库。它封装了针对XMPP协议的即时通讯过程中的一些操作,如登录,注册,发送消息等等,使得开发者不必关心XMPP中大量的xml数据的处理。Spark就是使用了smack开发。

github地址

缺点:API并非为大量并发用户设计,每个客户要1个线程,占用资源大,一般1台机器只能模拟有限(数千个)客户。

注:

  • Smack是针对java开发的,所以适用于Android,smack所依赖的jar包可以通过FindJar找到,也可以通过gradle引用Maven库里面的library。

  • 针对iOS,通常使用第三方库XMPPFramework

  • 针对JS,网络上也提供了许多第三方库 Converse.js   Strophe.js

4.2 Smack的示例

下面是一段smack的登录示例代码:

XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
  .setXmppDomain("jabber.org")  //xmpp服务器域名
  .setHost("earl.jabber.org")  //xmpp服务器主机地址
  .setPort(8222)  //xmpp服务器端口
  .build();
AbstractXMPPConnection conn = new XMPPTCPConnection(config);
conn.connect();//建立连接
conn.login("username", "password");//用户登录

smack一直在更新升级,不同版本代码差异巨大,而且官方文档不够详细,网上找的资料基本是旧版本的代码,这个很坑!

5 后记

有兴趣的同学可以去github上看看本人写的安卓端的xmpp示例应用Android XMPP Demo

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

相关推荐

xampp_stone_dup:xmpp石头包更新

XmppStone 轻量级XMPP客户端库完全用Dart编写。 我的意图是为基于Flutter的未来XMPP客户端编写易于使用的库。 支持的文件: RFC6120 :可扩展消息和状态协议(XMPP):核心 RFC6121 :可扩展消息和状态协议(XMPP):即时消息和状态 XEP-0198 :流管理 XEP-0085 :聊天状态通知 XEP-0318 :客户端启动的状态探针的最佳实践 XEP-0280 :消息碳 部分支持: XEP-0030 :服务发现 XEP-0313 :邮件归档管理 积极致力于: XEP-0059 :结果集管理 XEP-0004 :数据表单 最新消息 2020-10-30:添加了对XEP-0280的支持:Message Carbons 2020-10-30:添加了对XEP-0313的初始支持:消息存档管理 2020-10-30:添加了日志记录机制 2020-

XMPP 开源项目教程

XMPP 开源项目教程 1. 项目介绍 XMPP(Extensible Messaging and Presence Protocol,可扩展消息与在线协议)是一个开源的即时通讯协议,广泛用于各种即时通讯应用、物联网(IoT)、在线游戏等领域。XMPP 是一个分布式、去中心化的协议,支持多种扩展,能够满足不同应用场景的需求。 XMPP 的核心特点包括: 去中心化:没有中央服务器,任何人都可以在自...

gitblog_01074的博客 1073

xmpp_flutter:利用Xmpp Stone库在Flutter中编写的Xmpp客户端

simple_chat 利用Xmpp Stone库的简单聊天应用程序

XMPP即时通讯mac系统下ejabberd服务器环境搭建

对于XMPP即时通讯协议,我就不在这多说了,如果各位有心思去研究的话,我在这也提供一个网址:http://wiki.jabbercn.org/index.php?title=Ejabberd2:安装和操作指南&diff=prev&oldid=785 下面我就来说说ejabberd服务器环境搭建: 1、下载macports并安装。 mac os 10.8系统macports安装包:macpor

Abel的专栏 5391

XMPP权威指南 (利用jabber构建实时聊天应用).pdf

XMPP由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。 XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。

AI学习记录 - transformer的位置编码的理解

先看三角函数为什么可以,我们看下三角函数的图像先提一个点:位置信息肯定是唯一的,或者是在很长的文字当中,起码重复度不会太高,x轴代表位置,y轴代表叠加上去的值1、假设只使用一个三角函数sin,我们将第2和第14两个位置输入到sin,他们的值很像,在神经网络的训练中,很容易把第2个位置和第14个位置当成是一个位置,不满足我们上面说到的要求位置唯一性。sin2sin14。

weixin_43954090的博客 1412

【服务器】基于jabber(XMPP)架设内部即时通讯服务

Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。     XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XM

YING 1486

西门子S7-200 SMART PLC高速计数器与增量式编码器实战配置指南

在工业自动化控制系统中,传感器是将物理量转换为电信号的关键组件,其中编码器作为核心的位置与速度检测元件,其工作原理基于光电或磁电效应,将机械位移转换为脉冲序列。增量式编码器通过输出相位差90度的A/B两相脉冲,不仅能实现精确的位移测量,还能通过相位关系自动判别运动方向,并通过倍频技术提升分辨率。其技术价值在于为PLC等控制器提供了实时、高精度的位置反馈,是实现闭环控制、提升系统精度与可靠性的基础。在包装机械、物料输送、绕线设备等应用场景中,编码器与PLC高速计数器的协同工作是实现精确定位、定长切割与速度控制

weixin_29178069的博客 396

使用开源jabber(XMPP)协议及openfire架设内部即时通讯服务

Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。    XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP

低调的华丽的专栏 1735

普冉(PUYA)单片机开发笔记 [完结篇]:使用体会

这一篇是 PY32F003 应用实验的完结篇,总结了对这颗 MCU 的使用体会。我已经把自己实验用的代码打包上传,供各位码神参考。

Tomcat0130 - 代码生涯 9605

【QT+PCL】串口读取单线激光雷达数据并在QVtkWidget组件中实时刷新(一)

(本文主要记录开发过程以及遇到的困难及解决方式)

2301_76329543的博客 3068

基于jabber(XMPP)架设内部即时通讯服务

Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。    XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP

然 3202

腾讯ACE反作弊系统:内核驱动与AI行为分析如何守护游戏公平

在游戏安全领域,反作弊技术是保障公平竞技环境的核心防线。其基本原理是通过监控系统关键行为,识别并阻断非法的第三方程序干预。从技术实现看,现代反作弊方案普遍采用分层防御架构,结合用户态模块进行应用层检测,并依赖内核态驱动实现底层深度监控,以此构建纵深防御体系。这种技术的核心价值在于,它能有效对抗从简单内存修改到高级驱动级作弊等多种威胁,维护游戏经济系统和玩家体验的完整性。随着作弊手段的演进,行为分析与AI赋能变得至关重要,系统通过机器学习模型分析进程行为序列的异常模式,即使面对未知特征的外挂变种也能进行有效识

weixin_33978578的博客 744

XMPP协议

IM(即时通讯技术)Yahoo IM、MSN、QQ 各自通讯数据传输协议的不同  基于XML且开放的通讯和表示协议  在jabber协议基础上的 数据格式 目标是支持企业环境内的即时消息传递和联机状态应用程序 扩展协议Jingle使得其支持语音和视频,但ios尚不支持 官方文档RFC 3920    典型的C/S架构:只能是客户端访问  B/S指的是浏览器访问  TCP方式连接客户

woshixixi260324的专栏 472

自然语言处理(扩展学习1):Scheduled Sampling(计划采样)与Teacher forcing(教师强制)

作者:安静到无声作者简介:人工智能和硬件设计博士生、优快云与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。o( ̄▽ ̄)d。

安静到无声 2143

UMI——斯坦福刷盘机器人:通过手持夹爪革新数据收集方式,且使用视觉SLAM和Diffusion Policy预测动作

没想到今年年初的斯坦福mobilealoha的热度刚过,而到今年2月的下旬,斯坦福另一个团队又推出了UMI刷盘机器人,且这两个团队还互相认识、还在一块共同切磋(顺带小小感叹一下,斯坦福的氛围是真好而且真高产)斯坦福UMI刷盘机器人其与mobile aloha(以及AirExo: Low-Cost Exoskeletons for Learning Whole-Arm Manipulation in the Wild)最大的不同在于其收集数据处理的非真实的机器人,而是一个手持夹持器(从而大幅降低成本)

u013250861的博客 1357

iOS XMPP搭建IM

XMPP框架地址: https://github.com/robbiehanson/XMPPFramework    eJabberd服务器:https://www.process-one.net/en/ejabberd/downloads  Spark: http://www.igniterealtime.org/downloads/download-landing.jsp?file=s

weixin_40873814的博客 1370

YOLO26 网络结构逐模块解析:Backbone/Neck/Head

本文解析了YOLO26目标检测网络的架构设计,重点介绍其在Backbone、Neck和Head三个核心组件的创新优化。Backbone采用改进的CSP模块与轻量级注意力机制,提升特征提取效率;Neck使用改进的BiFPN结构实现高效多尺度特征融合;Head采用完全解耦设计简化回归流程。文章详细分析了各模块的技术演进、实现细节和设计思想,通过流程图和代码示例展示了YOLO26的整体架构和关键组件实现。该研究对模型优化、定制开发和硬件部署具有重要指导意义。

一键难忘的博客 1247

XMPP 搭建系统的 小结

框架选用 服务器使用的是openfire的开源框架 iOS使用的是xmppFramework 自行github Android使用的是smack (aSmack 已经弃用,目前使用的是 smack ) 本文不过多记录实现,具体实现自行百度。 目标 1 服务器 用户的创建 用户的注销 群组的创建 群组的注销 好友的添加 好友的删除 用户信息设置获取 支持私聊推送 2 手机端 基本收发 文...

有酒有故事 411

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

XMPP聊天软件客户端开发(1)

在此记下我做这个项目的过程,遇到的难点和问题。OK,项目开始问题当然是怎么去开发。 在初步了解XMPP是一个协议就可以知道这个开源的协议会有很多实现,无论是服务端还是客户端。所有软件基于XMPP来编写,就是面向接口编程的思想。整个项目的架构如下: 服务端:直接使用Openfire服务器,这个服务器很简便,基本把许多功能都实现了,而且安装简便。开发客户端基本上不会接触服务端的代码。客户端:开发

喝雪碧肚疼啊 781

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

采用spark和openfire实现即时通讯系统

名词解释:  Xmpp: 采用xml数据封装格式的点对点通讯协议。是目前最流行,通用的即时通讯协议。 Spark: 即时通讯客户端,类似QQ和MSN应用,代码实现采用smark类库(xmpp客户端类库),spark和smark都是开源的项目。采用Java语言编写. Open

wukunting的专栏 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 初入坑xmpp即时通讯(一)

之前做了一个神秘的政府项目,此处保密。里面用的东西奇多,又是专网。抛弃了各种第三方。原本刚来,不知道是用专网(这里近似看作局域网吧),我很兴奋的用极光,环信还有网易云之类的,还互相比较,最后慢慢写,写了近一个星期,就只差群聊就做完了。。。然后被通知是专网。。全部删掉了。想哭。。。 这里还是建议考虑项目需求,再选择使用那种方案,用第三方的这些集成好的sdk也挺好的。 XMPP(E

qq_30548105的博客 831

XMPP聊天程序iPhone版开发(一):初识XMPPFramework

由于前几天一直在写一个图片下载的第三方库,所以工作中需要做XMPP聊天的工作一直放着,到前天到开始研究XMPP,结果其过程是各种蛋痛~ 如今总算是有些收获~所以把其中的过程记录下来~希望对各位有些帮助~ 服务器端我用的是公司搭建的ejabberd服务器,服务器端搭建在这我不做讲解~ 一、XMPP介绍 简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示和需求响应服务

Abel的专栏 2925

zz基于jabber(XMPP)架设内部即时通讯服务

Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。 XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XM...

wtsusheng的专栏 154

iOS 实现XMPP协议

之前做过socket的聊天  可以做到群聊 文字+语音聊天 但是一对一的 加好友之类的 还没实现,服务器端写不来 呵呵 查了资料发现 现在的聊天服务器有开源的  有很多种  很多都是机遇xmpp协议来实现的,xmpp的前身是什么jabber  这个就自己去百度了 我用的一个开源服务器是 openfire 他有 linux mac window版本 他的安装都是比较简单的就部介绍了  网上找到了这

屎壳郎情调-成长日记 5507

IM开发-XMPP iOS开发(转)

最近项目中需要集成IM功能,市面上有很多的第三方提供im服务,比如环信、融云等,但都有使用限制的地方,如果不使用第三方可以自己去实现一套IM系统,不过一个IM系统涉及到的东西比较多,开发难度较高。另一种选择是使用xmpp,xmpp的优点是有很多的开源实现,比如服务端的ejabberd、Openfire,iOS以及安卓端都很优秀的开源库可以使用,而且传输安全以及扩展性强等(环信也是基于xm...

245
上一篇: 支持笔锋效果的手写签字控件
下一篇: 垃圾代码是如何写出来的
程序猫King
博客等级 码龄14年 5580粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猫King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值