Paho
来源:互联网 发布:网络推广公司招聘 编辑:程序博客网 时间:2024/05/16 19:27
查了一下LOG,我们是从2014年12月开始用MQTT的,当时找了IBM的MQTT(android)的库,是能正常工作,后来发现一些一个问题,“手机屏幕锁屏后手机不再发PING到服务器”,然后就修复,网上很多是直接用系统的AlarmClock定时加心跳,我们也是这样做的,后来还有小米的问题,也是很困扰,也修正了。
后来测试报一个错,断网后有的机器直接没有重连,查了一轮发现IBM.MQTT的LostConnect(),isConnect(),ping(),几个函数都挂掉了。准备重新找开源库,后来就发现这个:
http://wiki.eclipse.org/Paho
着手实践下
换库之后,在原来的基础上做一点修改就行:
1、
tcp://127.0.0.1@1883
改为
tcp://127.0.0.1:1883
2、
new MqttClient(MqttURL, iHardwareId,new MemoryPersistence());
其他函数看着替换就行。
之前我们在心跳重连方面下了不少功夫,现在看到这个库里的实现,真是有点意外:
public class TimerPingSender implements MqttPingSender {private static final String CLASS_NAME = TimerPingSender.class.getName();private static final Logger log = LoggerFactory.getLogger(LoggerFactory.MQTT_CLIENT_MSG_CAT,CLASS_NAME);private ClientComms comms;private Timer timer;public void init(ClientComms comms) {if (comms == null) {throw new IllegalArgumentException("ClientComms cannot be null.");}this.comms = comms;}public void start() {final String methodName = "start";String clientid = comms.getClient().getClientId();//@Trace 659=start timer for client:{0}log.fine(CLASS_NAME, methodName, "659", new Object[]{clientid});timer = new Timer("MQTT Ping: " + clientid);//Check ping after first keep alive interval.timer.schedule(new PingTask(), comms.getKeepAlive());}public void stop() {final String methodName = "stop";//@Trace 661=stoplog.fine(CLASS_NAME, methodName, "661", null);if(timer != null){timer.cancel();}}public void schedule(long delayInMilliseconds) {timer.schedule(new PingTask(), delayInMilliseconds);}private class PingTask extends TimerTask {private static final String methodName = "PingTask.run";public void run() {//@Trace 660=Check schedule at {0}log.fine(CLASS_NAME, methodName, "660", new Object[]{new Long(System.currentTimeMillis())});comms.checkForActivity();}}}
0 0
- Paho
- Practical MQTT with Paho
- MQTT协议 Python Paho
- MQTT Paho Getting Started
- paho.mqtt 之 PING
- 解读Paho MQTT源码
- paho mqtt资源地址
- paho java log输出
- paho example 理解
- MQTT paho客户端使用
- paho 推送参考
- MQTT,mosquitto,Eclipse Paho
- paho-mqtt 文档翻译
- paho.mqtt.javascript 断开问题
- 安装 paho mqtt golang包
- 用netty实现paho(一)
- MQTT实战:Eclipse Paho + Moquette
- [1] MQTT,mosquitto,Eclipse Paho----入门
- 【opencv 角点检测总结】
- spring 视图和视图解析器
- 网络爬虫去重参考
- 8.2.1.8 IS NULL Optimization NULL 优化:
- 如何把安全证书导入到java中的cacerts证书库
- Paho
- sysbench测试mysql与postgresql
- Orcle中Decode的使用
- Android应用程序签名详解
- Log4j源码阅读之二—LogManager的静态程序块
- Android 之 内存管理
- 将博客搬至51CTO
- IOS读取项目中文件
- 通用函数接口java.util.function.*