基于MQTT实现推送
来源:互联网 发布:淘宝网买东西找人付款 编辑:程序博客网 时间:2024/05/16 05:31
基于MQTT实现推送
项目中用到了MQTT实现推送,于是写篇博客记录一下,关于MQTT是做什么的,我就不做介绍了,直接看正文。
准备工作
下载activityMQ
下载activityMqhttp://activemq.apache.org/activemq-5150-release.html
部署服务
解压压缩包,执行activitymq.bat,看到如下界面就说明部署成功。
服务器已经部署了,要查看或者管理,我们可以登录到服务器,
怎么登陆昵,各位看官老爷有没有注意到刚刚启动的控制台
控制台在http://localhost:8161,用户名admin,密码admin
编写实例测试
消息接收
String URI = "tcp://10.0.5.12:1883"; String USERNAME = "admin"; String PASSWORD = "admin"; String CLIENT_ID = "wangjiang"; String TOPIC = "mqtt_topic"; private void connect() { try { mqttClient = new MqttClient(URI,CLIENT_ID,new MemoryPersistence()); MqttConnectOptions options = new MqttConnectOptions(); // 设置连接的用户名 options.setUserName(USERNAME); // 设置连接的密码 options.setPassword(PASSWORD.toCharArray()); //设置回调 mqttClient.setCallback(callback); //连接(该方法是同步的,且在当前线程执行) mqttClient.connect(options); mqttClient.subscribe(TOPIC); } catch (MqttException e) { e.printStackTrace(); } } private MqttCallback callback = new MqttCallback() { @Override public void connectionLost(Throwable throwable) { Log.d(TAG,"connectionLost "+throwable.toString()); } @Override public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { Log.d(TAG,"messageArrived s = "+s); byte[] payload = mqttMessage.getPayload(); String message = new String(payload); notification(message); } @Override public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { Log.d(TAG,"deliveryComplete "); } }; private int ID = 110; private void notification(String message) { Log.d(TAG,"message = "+message); NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentTitle("MQTT推送"); builder.setContentText(message); builder.setSmallIcon(R.mipmap.ic_launcher); manager.notify(ID++,builder.build()); }
稍微讲解一下吧,mqtt是通过订阅主题的方式来工作的,我们连接到服务器之后,需要订阅一个主题,之后我们就能接收到这个主题下的推送了,我们到控制台创建一个topichttp://localhost:8161/admin/subscribers.jsp,chiletId是客户端id,这个在生产环境中最好跟用户名保持一致,做到唯一性,topic是主题,主题我们就随便填个吧
创建成功后我们运行客户端代码,然后通过主题发布一条消息看看客户端能不能接收到,http://localhost:8161/admin/send.jsp?JMSDestination=com.mqtt.topic&JMSDestinationType=topic
点击发送,这时候我们的客户端就会接收到推送了
消息发布
上面我们实现了通过控制台发布消息,接下来我们用代码实现,直接看代码
/** * 发布消息 */ private void publishMessage() { if (mqttClient == null || !mqttClient.isConnected()) { return; } MqttMessage message = new MqttMessage(); message.setPayload("这是一条测试推送消息".getBytes()); try { mqttClient.publish(TOPIC,message); } catch (MqttException e) { e.printStackTrace(); } }
通过方法发送消息,一样能接收到消息,至此,我们的发布和接收都已经实现,
阅读全文
0 0
- 基于MQTT实现推送
- Android推送 基于MQTT
- 基于MQTT实现Android消息推送(Push…
- 采用基于MQTT的ActiveMQ实现消息推送
- Android基于MQTT协议实现的推送功能
- 基于Mqtt协议Paho项目实现Android消息推送
- 采用基于MQTT的ActiveMQ实现消息推送
- 采用基于MQTT的ActiveMQ实现消息推送
- MQTT实现消息推送
- MQTT实现消息推送
- MQTT实现消息推送
- MQTT客户端推送实现
- MQTT实现消息推送
- MQTT实现消息推送
- MQTT实现消息推送
- 基于MQTT的消息推送
- Android消息推送(二)--基于MQTT协议实现的推送功能
- Android消息推送(二)--基于MQTT协议实现的推送功能
- 创建游标
- node.js的安装教程
- 1044: 不及格率
- node.js调用Java接口连接hive
- 7月28日云栖精选夜读:【上报纸啦】95后大学生用机器学习PAI大战老年痴呆
- 基于MQTT实现推送
- ios-矩阵旋转缩放平移操作
- Visual Studio2013常用快捷键大全
- Java有没有多继承
- 设计模式之命令模式
- HTTP 最强资料大全
- 更新package.json中的dependencies依赖到最新版本
- Android内部存储与外部存储解析
- centos修改mysql字符集 解决中文乱码问题