首页
学习
活动
专区
圈层
工具
发布

XMPP Smack 客户端指南-Java快速入门教程

XMPP 是一种丰富而复杂的即时消息协议。 在本教程中,我们将介绍 Smack,这是一个用 Java 编写的模块化和可移植的开源 XMPP 客户端,它为我们完成了大部分繁重的工作。 2....为此,我们将在 jabber.hot-chilli.net 上创建一个帐户,这是一个免费的Jabber / XMPP服务。...它还提供了连接到服务器和登录的方法。 建立连接后,我们可以使用Smack的功能,例如聊天,我们将在下一节中介绍。 如果连接突然中断,默认情况下,Smack 将尝试重新连接。...Roster.SubscriptionMode.reject_all—— 拒绝所有订阅请求 Roster.SubscriptionMode.manual – 手动处理状态订阅请求 如果我们选择手动处理订阅请求,则需要注册一个 StanzaListener(在下一节中描述...Stanza 除了聊天之外,Smack 还提供了一个灵活的框架来发送Stanza并侦听传入的Stanza。 澄清一下,节是 XMPP 中离散的语义意义单位。

37000

OpenFire、Spark、Smack介绍

OpenFire 是采用Java开发的基于XMPP(Jabber)协议,开源实时协作(RTC)服务器。...Smack 是用 Java编 写的XMPP客户端代码库,是 spark 的核心 开源界总是有许多有趣的东东,这三个合起来就是一个完整的XMPP IM 实现。...OpenFire ——服务器端 Spark——客户端 Smack——XMPP 传输协议的实现 三者都是基于Java 语言的实现,其中XMPP是一个协议,协议是需要实现的,Smack起到的就是这样的一个作用...Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能 三者之间的关系: ?...从上图可知,Client 端和Server端都可以通过插件的方式来进行扩展,Smack是二者传递数据的媒介。

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    即时通讯技术解析:XMPP协议与优雅草蜻蜓I水银版私有化系统优雅草卓伊凡

    本文将深入探讨:XMPP协议的原理即时通讯中如何使用XMPP服务基于Java Spring构建XMPP服务优雅草蜻蜓I水银版如何利用XMPP实现私有化即时通讯—-.2....XMPP(Extensible Messaging and Presence Protocol,可扩展消息与存在协议)是一种基于XML的开放式即时通讯协议,最初由Jabber开源社区开发,后被IETF标准化...即时通讯中的XMPP服务应用3.1 XMPP在IM系统中的作用一对一聊天:直接发送XML格式消息。群组聊天(MUC, Multi-User Chat):基于XEP-0045协议。...基于Java Spring构建XMPP服务4.1 使用Smack库(XMPP客户端库)Smack是Java生态中最流行的XMPP客户端库,可与Spring集成。...结论XMPP作为成熟的即时通讯协议,在企业级IM系统中仍具优势。优雅草蜻蜓I水银版通过XMPP + 私有化加密的方案,提供了安全、可控的通讯解决方案。

    47700

    基于xmpp openfire smack开发之openfire介绍和部署

    当然也有其他的选择。 Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使用3.8.1版本,这个版本是当前最新的版本,而且网上可以找到下载的源代码。...Smack是即时通信客户端编程库,目前我已测通通过jsp使用smack的API向openfire注册用户发送消息,并且可以通过监听器获得此用户的应答消息。...正是因为使用了XML作为消息传递的中介,Extensible 才谈的上。XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。  ...这个页面中第一个选项,即标准数据库连接,不要选择嵌入的数据库(Embedded Database,嵌入的数据库是hsqldb数据库,生产环境不要选择此选项),然后点”继续”: ?...从上面的聊天记录我们发现所有的用户id全称都是:用户名@域名/资源名,这个就是我们在XMPP协议中通常说说的JID,即jabber id,它是一个xmpp协议帐号系统的通称,后面我们在使用smack编程库调试接口时会经常用到这个参数

    2.2K20

    xmpp即时通讯四

    在‘jabber:client’命名空间中,节应当处理‘to’属性,虽然,由服务器处理的从客户端到服务器端的节不应该拥有‘to’属性。      ...服务器不准发送给客户端一个不包括‘from’属性的节,它必须设想节是从服务器到已连接客户端。        ...注:'jabber:client'与'jabber:server'命名空间是接近同一的,但用在不同的上下文中(客户端到服务顺通信用 'jabber:client'与服务器到服务器通信用'jabber:server...这两个仅有的不同是‘to’与‘from’属性在 'jabber:client'中发送的节中是可选的,然而在'jabber:server'中发送的节是必须的。...如果一个兼容实现接受一个由 'jabber:client'或'jabber:server'命名空间认证合格的流,它必须支持所有三个核心节种类的(消息,出席,与IQ)通用属性(9。1节)与基本语义(9。

    2.9K60

    XMPP客户端库Smack 4.0.6版开发之二

    = new XMPPTCPConnection("mtucker", "password", "jabber.org"); connection.connect(); connection.login...1)无需熟悉XMPP的XML格式,甚至都不需要了解XML 2)提供了简单的M2M通信 Smack让开发者可以对每条消息都设置大量的属性,属性中还可以包含Java对象。...3)基于Apache许可证的开源代码,这意味着你可以把Smack放入你自己的商业软件中。 四、Smack库的组成 Smack库可以内嵌到任意的Java应用程序中。...初始化是通过配置文件来完成的。默认情况下,Smack会载入Smack JAR文件中内嵌的配置文件(它位于org.jivesoftware.smack/smack-config.xml)。...这个指定的配置文件包含了一系列需载入初始化的类列表。所有的管理器类型的类都需要被初始化,这些管理器类就包含在上面所说的初始化列表中。

    1.5K50

    xmpp即时通讯二

    在此定义的仅有的XML节是,,元素,由流的缺省命名空间验证,在XML节(第9节)中描述;为传输层安全(TLS:Transport Layer Security...4.3 流安全         当在XMPP1.0中协商XML流时,TLS应当按TLS应用(第5节)所定义的来使用,SASL必须按SASL(第6节)所定义的来使用。...8) 根据从初始实体接收的新流头,接收实体必须靠发送一个新XML流头给有可利用特征(不包括STARTTLS特征)的初始实体来响应。...1步:客户端初始流给服务器:    <stream:stream        xmlns='jabber:client'        xmlns:stream='http://etherx.jabber.org...<stream:stream        xmlns='jabber:client'        xmlns:stream='http://etherx.jabber.org/streams'

    2.8K90

    7.xmpp版即时聊天

    ,分为tcp和udp两种形式 常见的术语 xmpp:基于xml的可拓展协议. jabber:xmpp的前身. openfire:支持xmpp的开源服务器 smack.jar:对xmpp协议封装.方便开发的...XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。 xmpp特点: 开放: XMPP协议是自由、开放、公开的,并且易于了解。...标准: 互联网工程工作小组( IETF )已经将Jabber的核心XML流协议以XMPP之名,正式列为认可的实时通信及Presence技术。...安全: 任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。...如意通的安装-->xmpp客户端2 pc端-服务器-pc端演示 smack常见api的查看.

    2.4K10

    7.xmpp版即时聊天

    tcp和udp两种形式 常见的术语 xmpp:基于xml的可拓展协议. jabber:xmpp的前身. openfire:支持xmpp的开源服务器 smack.jar:对xmpp协议封装.方便开发的jar...XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。  xmpp特点: 开放: XMPP协议是自由、开放、公开的,并且易于了解。 ...标准: 互联网工程工作小组( IETF )已经将Jabber的核心XML流协议以XMPP之名,正式列为认可的实时通信及Presence技术。 ...安全: 任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。...如意通的安装-->xmpp客户端2 pc端-服务器-pc端演示 smack常见api的查看.

    2.6K60

    xmpp即时通讯三

    5) 任何包含在XML元素中的XML字符数据,在SASL协商期间使用,必须使用base64编码,编码在RFC3548第三节有定义。      ...步1:客户端初始流给服务器:    <stream:stream        xmlns='jabber:client'        xmlns:stream='http://etherx.jabber.org...='1.0'> 步11:服务器通过发送流头来响应客户端,伴随有任意另外的特征(或空特征元素):    <stream:stream        xmlns='jabber:client'       ...成功SASL协商后(不是前),它通过发送响应流的头表示给客户端: 服务器广告资源绑定特征给客户端:    <stream:stream        xmlns='jabber:client'       ...xmlns='jabber:server'        xmlns:db='jabber:server:dialback'> 注:在根流元素中,‘to’与‘from’属性是可选的。

    2.7K80

    XMPP协议

    在这四种协议中,XMPP是最灵活的。 XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。...4、XMPP协议示例 客户端: to='example.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams...' version='1.0'> 服务器: from='example.com' id='someid' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org...其中的stream标签就是所谓的XML Stream。在与中间的那些…这样的XML元素就是所谓的XML Stanza(XML节)。...SIP是IETF中为终端制定的协议。SIP一般考虑用在建立语音通话中,一旦连接以后,依靠如实时协议(RTP)来进行实际上的语音发送。但SIP不仅仅能被用在语音中,也可以用于视频。

    3.6K40

    OpenFeign的9个坑,每个都能让你的系统奔溃

    坑一:用对Http Client 1.1 feign中http client 如果不做特殊配置,OpenFeign默认使用jdk自带的HttpURLConnection,我们知道HttpURLConnection...坑三:单服务设置超时时间 从上一节的讲解我们看到,需要对serviceC单独设置一个超时时间,代码如下: feign.client.config.serviceC.connectTimeout=2000...feign.client.config.serviceC.readTimeout=60000 这个时间会覆盖第一节中默认的超时时间。...1.同一实例最大重试次数,不包括首次调用,配置如下: serviceC.ribbon.MaxAutoRetries=1 这个次数不包括首次调用,配置了1,重试策略会先尝试在失败的实例上重试一次,如果失败...2.同一个服务其他实例的最大重试次数,这里不包括第一次调用的实例。

    3.8K20

    OpenFeign的9个坑,每个都能让你的系统奔溃

    坑一:用对Http Client 1.1 feign中http client 如果不做特殊配置,OpenFeign默认使用jdk自带的HttpURLConnection,我们知道HttpURLConnection...坑三:单服务设置超时时间 从上一节的讲解我们看到,需要对serviceC单独设置一个超时时间,代码如下: feign.client.config.serviceC.connectTimeout=2000...feign.client.config.serviceC.readTimeout=60000 这个时间会覆盖第一节中默认的超时时间。...1.同一实例最大重试次数,不包括首次调用,配置如下: serviceC.ribbon.MaxAutoRetries=1 这个次数不包括首次调用,配置了1,重试策略会先尝试在失败的实例上重试一次,如果失败...2.同一个服务其他实例的最大重试次数,这里不包括第一次调用的实例。

    10.2K34

    go语言微服务之RPC协议

    目录 1 什么是RPC 2 RPC 使用的步骤 3 RPC相关函数 4 代码实现 4.1 服务端代码实现 4.2客户端代码实现 4.3程序实现结果 ---- 1 什么是RPC ---- Remote Procedure...conn.Call(“服务名.方法名”,传入参数,传出参数) 3 RPC相关函数 ---- 1,注册rpc服务 func(server *Server) RegistName(name string...首字母大写 方法必须两个参数,都是导出类型,内建类型 方法的第二个参数必须是“指针”(传出参数) 方法只有一个error 接口类型的 返回值 如: type World struct { }...socket — conn 3,调用远程函数 func (client *Client) Call(serviceMethod string, args interface{}, reply interface...方法需要的数据。 reply:传出参数。定义 var 变量,&变量名 完成传参。

    52120
    领券