项目需要简单搭建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);

openfire/spark/asmack 环境调试纪要的更多相关文章

  1. iOS xmpp Openfire+spark环境搭建

    配置这个遇到太多问题了,写下来分享 首先到官网下载openfire+spark 下载地址:http://www.igniterealtime.org/downloads/index.jsp

  2. openfire spark 二次 开发 服务插件

    ====================  废话 begin   ============================ 最近老大让我为研发平台增加即时通讯功能.告诉我用comet 在web端实现即 ...

  3. openfire+spark+smack实现即时通讯

    近公司项目需要用到即时通讯功能,经过调研发现openfire+spark+smack可以实现.在网上找了很久,资料都十分有限,即使有些朋友实现了也说的不清不楚.于是决定自己研究,耗时一周的时间实现了文 ...

  4. windows下spark开发环境配置

    http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...

  5. sbt结合IDEA对Spark进行断点调试开发

    笔者出于工作及学习的目的,经常与Spark源码打交道,也难免对Spark源码做修改及测试.本人一向讲究借助工具提升效率,开发Spark过程中也在摸索如何更加顺畅的对源码进行调试. Spark基于Sca ...

  6. Spark编译及spark开发环境搭建

    最近需要将生产环境的spark1.3版本升级到spark1.6(尽管spark2.0已经发布一段时间了,稳定可靠起见,还是选择了spark1.6),同时需要基于spark开发一些中间件,因此需要搭建一 ...

  7. Intellij IDEA使用Maven搭建spark开发环境(scala)

    如何一步一步地在Intellij IDEA使用Maven搭建spark开发环境,并基于scala编写简单的spark中wordcount实例. 1.准备工作 首先需要在你电脑上安装jdk和scala以 ...

  8. MacOS使用IDEA+Maven+Scala+Spark进行本地调试

    参考:spark开发环境搭建(基于idea 和maven) 安装JDK 从这里下载Java 8的JDK 设置JAVA_HOME环境变量,在Mac上它大概会是/Library/Java/JavaVirt ...

  9. Windows下单机安装Spark开发环境

    机器:windows 10 64位. 因Spark支持java.python等语言,所以尝试安装了两种语言环境下的spark开发环境. 1.Java下Spark开发环境搭建 1.1.jdk安装 安装o ...

随机推荐

  1. delphi真随机数发生器

    当然不是绝对真随机,是相对真随机数 下载

  2. Javascript 处理时间大全

    1. 获取从今天算起,几天后的日期 function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate() + ...

  3. 3dmax渲染插件,生成2.5d瓦片

    基于3dmax2013的2.5d渲染插件,demo版,需要的和感兴趣的可以试用,这是百度网盘地址:http://pan.baidu.com/s/1c0mYY7e 插件主要功能,按层级对3dmax场景进 ...

  4. Android studio debug模式获取变量的值

    打断点.debug模式运行,Console界面旁边的Debugger界面,或者在变量上右键add to watches

  5. Ubuntu下deb包的安装方法 (zz)

    Ubuntu下deb包的安装方法 分类: Ubuntu10使用技巧 2010-10-11 23:49 42969人阅读 评论(3) 收藏 举报 ubuntudebdebianlinux deb是deb ...

  6. Windows下的UDP爆了10054--远程主机强迫关闭了一个现有的连接

    原文地址:http://www.cnblogs.com/pasoraku/p/5612105.html 故事是这样的. 前几天在网上逛,看到了一个漂亮的坦克模型. 我觉得这个坦克可以做一个游戏,那需要 ...

  7. jQuery-强大的jQuery选择器 (详解)[转]

      1. 基础选择器 Basics 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择ID为divId的元素 element 根据元素的名称选择, $(&quo ...

  8. hdu 1142(DFS+dijkstra)

    #include<iostream> #include<cstdio> #include<cmath> #include<map> #include&l ...

  9. Java 第29章GUI

    GUI入门 JDBC 连接数据库的过程 注册驱动(class ,forName) 创建连接 创建连接对象 执行SQL语句 statement对象的类型与作用 1.(layout :版面,布局) 2.( ...

  10. codeIgniter怎么实现对input type=text对话框blur事件的监听以及传值?

    如题,这个问题怎么解决? 用JS和前端框架习惯了,现在学后端框架,感觉各种坑...