项目须要简单搭建openfire/spark/asmack的环境及程序demo,本文简单记录以避免遗忘。java
一、openfire/spark 是java编写的xmpp服务器及PC客户端,安装过程至关简单一直next;须要注意的是openfire中配置的域名,后续会做为客户端接入的地址,能够配置成你的局域网IP。android
二、asmack是android下的smack报,即一个XMPP协议栈的客户端版本,记录以下:服务器
con = new XMPPConnection("192.168.0.28"); con.connect();
注册完成并登录后会在openfire的管理后台看见该用户信息以及登录状况。异步
con.login(account, password);
Packet的接受有同步和异步两种,以下:spa
// 建立一个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);
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 newChat = connection.createChat("jsmith@jivesoftware.com"); Message newMessage = newChat.createMessage(); newMessage.setBody("Howdy!"); message.setProperty("favoriteColor", "red"); newChat.sendMessage(newMessage);