openfire维持在线状态,监听消息
public static void testLoginStatus()throws XMPPException,InterruptedException {
AccountManager accountManager;
final ConnectionConfiguration connectionConfig = new ConnectionConfiguration("127.0.0.1", Integer.parseInt(""), "");
// 允许自动连接
connectionConfig.setReconnectionAllowed(true);
connectionConfig.setSendPresence(false);
final Connection connection = new XMPPConnection(connectionConfig);
try {
connection.connect();// 开启连接
accountManager = connection.getAccountManager();// 获取账户管理类
} catch (XMPPException e) {
throw new IllegalStateException(e);
}
connection.login("", "", "");
Presence presence=new Presence(Presence.Type.available);
presence.setStatus("");
connection.sendPacket(presence);
ProviderManager.getInstance().addIQProvider("ping", "urn:xmpp:ping", new PingIQProvider());
connection.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet p) {
try {
Thread.sleep();
} catch (Exception ex){}
PingIQ pingIQ = (PingIQ) p;
IQ pongIQ = pingIQ.createResultIQ(pingIQ);
// 返回
connection.sendPacket(pongIQ);
}}, new PacketTypeFilter(PingIQ.class));
//Roster roster=connection.getRoster();
//roster.createEntry("002@127.0.0.1","001", new String[]{"Friends"});
//监听接收到的消息 包括单聊 群聊 和广播
// ChatManager cm=connection.getChatManager();
// cm.addChatListener(new ChatManagerListener() {
// @Override
// public void chatCreated(Chat chat, boolean create) {
// chat.addMessageListener(new MessageListener() {
// @Override
// public void processMessage(Chat chat, Message msg) {
// if (msg.getBody() != null) {
// try {
// System.out.println("cm:"+msg.getBody());
// System.out.println(chat.getParticipant());
// chat.sendMessage("你刚才说的是:" + msg.getBody()); // 发送消息
// } catch (XMPPException e) {
// e.printStackTrace();
// }
// }
// }
// });
// }
// });
//单聊监听
Chat mychat = connection.getChatManager().createChat("002@10.39.73.150/Spark", // 接收端的JID,JID是要加域的
new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
try {
if (message.getBody()!=null) {
System.out.println("接受到来自002的消息:" + message.getBody());
chat.sendMessage("您发的消息是:" + message.getBody());
}
}catch (Exception ex){
System.out.println(ex.getMessage());
}
}
});
Message msg = new Message();
msg.setBody("upload/casePic/2016/5/11/14629304841938816.jpg");
mychat.sendMessage(msg);
// connection.disconnect();
while (true);
}
openfire维持在线状态,监听消息的更多相关文章
- Android监听消息通知栏点击事件
Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class N ...
- ActiveMQ监听消息并进行转发,监听不同的mq服务器和不同的队列
工作中刚接触mq消息业务,其实也就是监听一下别的项目发送的消息然后进行对应的转发,但是监听的mq会有多个,而且转发的地址也可能有多个,这里就使用spring集成的方式!记录一下实现方式: 监听多个mq ...
- Yii2.0 安装yii2-queue并在Linux启动守护进程监听消息
一.什么是yii2-queue? Yii2-queue是Yii2.0 PHP框架下一个消息队列拓展插件,支持基于DB, Redis, RabbitMQ, AMQP, Beanstalk 和 Gearm ...
- 重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 知道的越多不知道的就越多 编程开发这条路上的知识是无穷无尽的, ...
- 使用jedis实现Redis消息队列(MQ)的发布(publish)和消息监听(subscribe)
前言: 本文基于jedis 2.9.0.jar.commons-pool2-2.4.2.jar以及json-20160810.jar 其中jedis连接池需要依赖commons-pool2包,json ...
- spring+activemq实战之配置监听多队列实现不同队列消息消费
摘选:https://my.oschina.net/u/3613230/blog/1457227 摘要: 最近在项目开发中,需要用到activemq,用的时候,发现在同一个项目中point-to-po ...
- redis事件监听及在订单系统中的使用
https://blog.csdn.net/qq_37334135/article/details/77717248 通常在网上买好物品,或者说手机扫码后,点击付款,这时就会向后台发送请求,生成订单信 ...
- XMPP——Smack[2]会话、消息监听、字体表情和聊天窗口控制
连接之后,拿到了connection,通过它可以搞定会话 建立一个会话 MessageListener msgListener = new MessageListener() { public voi ...
- Rabbitmq无法监听后续消息
现象: 消息队列在处理完一条消息后,无法继续监听后续消息. 首先,系统启动时要启动接收方法如下: protected void Application_Start() { RouteTable.Rou ...
随机推荐
- iOS获取真机沙盒文件、获取真机本地数据
有时我们需要对真机内的数据进行分析,那么如何获取沙盒所有数据文件呢? 1.设备连接到电脑,打开xcode 2.打开window-devices 3.打开后,选择设备名,选择app,导出数据 4.最后拿 ...
- quine
发鸠之山,其上多柘木,有鸟焉,其状如乌,文首,白喙,赤足,名曰:"精卫",其鸣自詨(音同"笑").是炎帝之少女,名曰女娃.女娃游于东海,溺而不返,故为精卫,常衔 ...
- keras中的loss、optimizer、metrics
用keras搭好模型架构之后的下一步,就是执行编译操作.在编译时,经常需要指定三个参数 loss optimizer metrics 这三个参数有两类选择: 使用字符串 使用标识符,如keras.lo ...
- 【Redis】Redis的常规操作命令
NoSQL是一种非关系型数据库,非关系型数据库库和传统的关系型数据库不同,非关系性体现在不需要依赖表进行数据存储.常见的非关系型数据库有Redis.MonoDB.HBase等,这些是基于key-val ...
- Android上面通过URL来启动本地应用
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" ...
- Oracle 12C -- top-n查询新特性
Oracle 12C -- top-n查询新特性在12C中,增加了一些新的特性.可以指定返回结果集的指定数量的行.或按照百分比返回行. SQL> select count(*) from emp ...
- Maven for Eclipse 第二章 ——安装 m2eclipse插件
m2eclipse 是一个提供了 Maven 与 Eclipse 整合的插件.它的意图是桥接上 Maven 和 Eclipse 之间的缺口.通过 Maven 原型提供的简单直白的接口创建项目,它使 M ...
- jQuery的prop和attr的区别,及判断复选框是否选中
jQuery的prop和attr的区别 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 参数有区别,att ...
- [转]Intellij IDEA快捷键与使用小技巧
Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...
- mysql存储过程批量向表插入数据
业务需要,往某个表中批量插入数据,使用存储过程插入 首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使 ...