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);
openfire/spark/asmack 环境调试纪要的更多相关文章
- iOS xmpp Openfire+spark环境搭建
配置这个遇到太多问题了,写下来分享 首先到官网下载openfire+spark 下载地址:http://www.igniterealtime.org/downloads/index.jsp
- openfire spark 二次 开发 服务插件
==================== 废话 begin ============================ 最近老大让我为研发平台增加即时通讯功能.告诉我用comet 在web端实现即 ...
- openfire+spark+smack实现即时通讯
近公司项目需要用到即时通讯功能,经过调研发现openfire+spark+smack可以实现.在网上找了很久,资料都十分有限,即使有些朋友实现了也说的不清不楚.于是决定自己研究,耗时一周的时间实现了文 ...
- windows下spark开发环境配置
http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...
- sbt结合IDEA对Spark进行断点调试开发
笔者出于工作及学习的目的,经常与Spark源码打交道,也难免对Spark源码做修改及测试.本人一向讲究借助工具提升效率,开发Spark过程中也在摸索如何更加顺畅的对源码进行调试. Spark基于Sca ...
- Spark编译及spark开发环境搭建
最近需要将生产环境的spark1.3版本升级到spark1.6(尽管spark2.0已经发布一段时间了,稳定可靠起见,还是选择了spark1.6),同时需要基于spark开发一些中间件,因此需要搭建一 ...
- Intellij IDEA使用Maven搭建spark开发环境(scala)
如何一步一步地在Intellij IDEA使用Maven搭建spark开发环境,并基于scala编写简单的spark中wordcount实例. 1.准备工作 首先需要在你电脑上安装jdk和scala以 ...
- MacOS使用IDEA+Maven+Scala+Spark进行本地调试
参考:spark开发环境搭建(基于idea 和maven) 安装JDK 从这里下载Java 8的JDK 设置JAVA_HOME环境变量,在Mac上它大概会是/Library/Java/JavaVirt ...
- Windows下单机安装Spark开发环境
机器:windows 10 64位. 因Spark支持java.python等语言,所以尝试安装了两种语言环境下的spark开发环境. 1.Java下Spark开发环境搭建 1.1.jdk安装 安装o ...
随机推荐
- NC 解决启动环境报内存溢出问题
java heap space 内存溢出 解决方法如下: 在eclipse中,window-->preferences-->Java-->Installed JREs选中JRE 点击 ...
- 在windows下面配置redis集群遇到的一些坑
最近工作不忙,就决定学习一下redis.因为一直在windows下工作,不会linux,没办法就选择在windows下配置redis. windows下配置redis集群的文章有很多,比如:http: ...
- TCP3次握手和4次挥手
为什么握手是3次,挥手是4次? 因为握手的时候,ACK+SYN可以一起发送,而4次挥手是Server端发送对Client的FIN的ACK后不一定会立即断开连接,需要将ACK和FIN分开发送 为什么TI ...
- 匿名访问ReportService报表服务器(一)
我的数据库版本是sql server 2008 r2,系统环境是windows server2008. 对于sql server 2008 r2上报rs报表的匿名访问问题,我这边尝试过两个可行方案: ...
- Shell使用技巧
巧用定界符delimiter 输入大段文本的地方 自动选择和输入的地方 访问数据库 Angel@DESKTOP-254LBLA ~ $ cat > out.txt << EOF &g ...
- handsontable组件和jqwidgets(jqxdragdrop组件)在一个页面产生调整宽高bug
修改handsontable.full.js handsontable绑定的"mouseup"事件,默认是window区域太大.引起冲突.
- .net core Entity Framework Core Code First 框架 分层开发
由于之前苦于无法把 Entityframework 跟Web层剥离.找了很久..找到了这个框架..分享给大家.. GitHub 地址:https://github.com/chsakell/dotn ...
- MVC模式下向qq邮箱发送邮件
将已经保存在数据库中的密码通过邮件发送到qq邮箱中.用的ssm框架,其中的config文件要先配置好. 用到的jar包有gson-2.2.1.jar,gson.jar,mail.jar,activat ...
- java的继承
1.什么是继承:一个类从另外一个类中得到成员.属性和行为方法等. 案例: //父类 public class Animal { // 变量 public int height=1; // 方法 pub ...
- Block循环引用问题研究
自从苹果在objc中添加Block功能支持以后已经过了很久.目前网上对于Block的使用有很多介绍.不过对于Block的内存管理问题,则是众说纷纭.再加上objc开始使用ARC以后,对于Block的内 ...