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

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/41594855 XMPP客户端库Smack 4.0.6版开发之三作者:chszs,转载需注明。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/41594855

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

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

六、建立连接的例子

XMPPConnection类用于创建一个到XMPP服务器的连接,代码例子如下:

// 创建一个到jabber.org服务器的连接
AbstractXMPPConnection conn1 = new XMPPTCPConnection("username", "password", "jabber.org");
conn1.connect();

// 创建一个到jabber.org服务器指定端口的连接
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
		.setUsernameAndPassword("username", "password")
		.setServiceName("jabber.org")
		.setHost("earl.jabber.org")
		.setPort("8222)
		.build();
AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);
conn2.connect();

注意,在连接到XMPP服务器时,如果采用默认设置,会使用最大程度的安全,包括TLS加密的应用。ConnectionConfiguration类通过了对创建的连接的高级控制,比如可以开启或关闭加密。
以后可查看文档《XMPPConnection Management》:
https://github.com/igniterealtime/Smack/blob/master/documentation/connections.html
(目前还是无效的)

一旦你创建了一个连接后,你应该调用XMPPConnection.login()方法进行服务器登录。一旦登录后,你就可以通过创建Chat对象或GroupChat对象开始与其他用户聊天了。

七、Roster(名单)的用法

Roster用于跟踪其他用户是否在线。用户的联系人可以以分组的方式进行组织,比如“好友”、“同事”。然后就可以查看组中的每个用户是否在线了。
要检索Roster,使用XMPPConnection.getRoster()方法。Roster类允许你查找所有的Roster实体,以及他们属于哪个组,每个实体当前的在线状态。

八、读写Packet(数据包)

从客户端发送到XMPP服务器的每一条消息都称为一个Packet(数据包)。org.jivesoftware.smack.packet库中包含了XMPP支持的(消息Message、在线状态Presence、IQ)三种不同的基本数据包类型的封装类。而像Chat或GroupChat这样的类则提供了更高层的结构来管理数据包的自动创建和发送。但是,开发者还是可以直接创建和发送数据包的。
下面的代码就是修改自己的在线状态,让其他人知道你不在线。

// 创建新在线状态对象,并设为离线状态
Presence presence = new Presence(Presence.Type.unavailable);
presence.setStatus("Gone fishing");
// 发送数据包(假设我们已经有XMPPConnection的连接实例con
con.sendPacket(presence);

Smack提供了两种读取到来的数据包的方式:PacketListener(包监听器)和PacketCollector(包收集器)。
两者都使用PacketFilter实例来判断应该处理哪一个数据包。
PacketListener(包监听器)用于事件风格的编程,而PacketCollector(包收集器)有一个数据包的结果队列,你可以做轮询或阻塞等操作。
也就是说,如果你想在数据包到来时执行一些动作,那么包监听器很适合。如果你想等待指定的数据包的到来,那么包收集器很适合。
包收集器和包监听器都使用Connection连接实例创建。
目录
相关文章
|
Web App开发 安全 网络协议
Qt开发技术:QWebSocket客户端、服务端介绍与开发
Qt开发技术:QWebSocket客户端、服务端介绍与开发
Qt开发技术:QWebSocket客户端、服务端介绍与开发
|
4月前
|
消息中间件 JavaScript Java
跨平台 AMQP 客户端开发指南
【8月更文第28天】高级消息队列协议 (AMQP) 是一种开放标准的应用层协议,用于中间件。它定义了消息如何在消息代理(通常是消息队列服务器)与客户端应用程序之间传递。本文将指导您如何为不同的编程语言构建跨平台的 AMQP 客户端,并提供一些具体的代码示例。
103 1
|
测试技术 API
【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决
前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿。而这之前,程序之间通信效率的王者也许可以算得上是gRPC了。那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着比拼一下minimal api服务和gRPC服务在通信上的效率。
462 0
【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决
XMPP客户端库Smack
原文博客地址:http://blog.csdn.net/chszs/article/details/41576877
858 0
|
数据安全/隐私保护 iOS开发 分布式计算
|
数据安全/隐私保护 安全
XMPP客户端库Smack 4.0.6版开发之四
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/41620825 XMPP客户端库Smack 4.0.6版开发之四 作者:chszs,转载需注明。
891 0
XMPP客户端库Smack 4.0.6版开发之五
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/41620843 XMPP客户端库Smack 4.0.6版开发之五 作者:chszs,转载需注明。
688 0
XMPP客户端库Smack 4.0.6版开发之六
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/41620853 XMPP客户端库Smack 4.0.6版开发之六 作者:chszs,转载需注明。
782 0
|
Java API Apache
XMPP客户端库Smack 4.0.6版开发之二
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/41576877 XMPP客户端库Smack 4.0.6版开发之二 作者:chszs,转载需注明。
757 0