openfire/spark/asmack 环境调试纪要
项目需要简单搭建openfire/spark/asmack的环境及程序demo,本文简单记录以免遗忘。
1、openfire/spark 是java编写的xmpp服务器及PC客户端,安装过程相当简单一直next;需要注意的是openfire中配置的域名,后续会作为客户端接入的地址,可以配置成你的局域网IP。
2、asmack是android下的smack报,即一个XMPP协议栈的客户端版本,记录如下:
- 应用启动后简历一个xmpp连接
con = new XMPPConnection("192.168.0.28"); con.connect();
- 客户端首先要注册用户,用户的账号最终要符合XMPP标准,即XX@XXX
注册完成并登陆后会在openfire的管理后台看见该用户信息以及登陆情况。
con.login(account, password);
- 客户端发送到XMPP服务端的消息被称为packet,根据协议封装为三种:
- message:最基本的推送消息,不要求响应,用以IM中;
- presence: 用以表示用户的状态,如在线、离开等;
- IQ(info/query):一个实体发出请求,要求另外一个实体给出响应;
Packet的接受有同步和异步两种,如下:
// 创建一个packet过滤器来监听来自一个特定用户的新的消息 //我们可以使用一个AndFilter来结合其它两个过滤器。 PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class), new FromContainsFilter("mary@jivesoftware.com")); // 假设我们已经创建了一个名为"connection"的XMPPConnection。 // 首先,用我们创建的过滤器注册一个packet收集器。 PacketCollector myCollector = connection.createPacketCollector(filter); // 通常,您应该用收集器来些什么,像等待新的packet。 // 接下来,创建一个packet监听器。我们可以简便地使用匿名内部类。 PacketListener myListener = new PacketListener() { public void processPacket(Packet packet) { // 在这里用收到的packet做些什么。 } }; // 注册这个监听器。 connection.addPacketListener(myListener, filter);
- Roster 在asmack中代表用户,可以是一个用户,也可以是一个用户组:
List<RosterEntry> entries = new ArrayList<RosterEntry>(); RosterGroup rosgrou = con.getRoster().getGroup(group); Collection<RosterEntry> roscol = rosgrou.getEntries(); Iterator<RosterEntry> iter = roscol.iterator(); while (iter.hasNext()) { entries.add(iter.next()); } return entries;
- 消息的发送采用chat或者chatgroup,该类是在packet基础上的封装
Chat newChat = connection.createChat("jsmith@jivesoftware.com"); Message newMessage = newChat.createMessage(); newMessage.setBody("Howdy!"); message.setProperty("favoriteColor", "red"); newChat.sendMessage(newMessage);
分类:
uc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)