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 ...
随机推荐
- GO语言中的几个关键思想
GO语言的设计理念与C++,Java,Python之流大相径庭. 一.没有函数重载 GO语言里面没有函数重载,Java.C#.C++三位大牛都是支持函数重载的,Python虽然不支持函数重载,但是支持 ...
- leetcode770. Basic Calculator IV
此题真可谓是练习编程语言的绝好材料 ! import java.util.*; class Solution { class Item { Map<String, Integer> var ...
- activiti实战--第二章--搭建Activiti开发环境及简单示例
(一)搭建开发环境 学习资料:<Activiti实战> 第一章 认识Activiti 2.1 下载Activiti 官网:http://activiti.org/download.html ...
- sqlserver学习笔记(三)—— 为数据库添加新的用户
首先,用windows或sa身份登录sqlserver, 打开安全性——登录名——右键新建登录名:在选择页——常规中,新建命为user_b的登录名,选择sqlserver身份验证方式,设置密码确认密码 ...
- iOS11新特性之LargeTitle
UI风格 在iOS 11中,系统APP使用了这种UI风格.这种风格最明显的变化就是使用了iOS 11的新特性--Large Title和新的SearchController. Demo GitHub: ...
- C# Httpclient客户端操作
原文地址:https://www.cnblogs.com/Xujg/p/4113387.html HttpClient 当前主流用法,异步请求,自.NET4.5开始可从Nuget包管理中获取. usi ...
- hashCode方法
hashCode方法: 当覆写(override)了equals()方法之后,必须也覆写hashCode()方法,反之亦然.这个方法返回一个整型值(hash code value),如果两个对象被eq ...
- 关于 f 散度
在概率统计中,f散度是一个函数,这个函数用来衡量两个概率密度p和q的区别,也就是衡量这两个分布多么的相同或者不同. 1.f散度的定义p和q是同一个空间中的两个概率密度函数,它们之间的f散度可以用如下方 ...
- Spring boot validation校验
使用 Hibernate validator 的步骤:1. 在 Pojo 类的字段上, 加上 Hibernate validator 注解2. 在Controller 函数的形参前加上 @Valid ...
- 转 Kafka docker
Kafka 教程 http://haofly.net/kafka/ Posted on 2016-12-23 | In tools | | Views: 224 重要概念 生产者(Produc ...