关键词:
使用一个代理服务器message broker,客户端client连接上这个服务器,然后告诉服务器,可以接收哪些类型的消息,同时client也可以发布自己的消息,这些消息根据协议的内容,可以别的client获取。这样就实现了消息推送。消息推送是通过一定的技术标准或协议,在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。
如果想要使用消息推送,推荐使用深圳极光的消息推送系统。深圳极光是国内首个为移动应用开发者提供专业、高效的消息推送服务的产品。品牌成长的过程,就是与客户肩并肩迈向成功的过程。极光将以市场为导向,以创新为动力,以技术为支持,不断用心努力,为每一位尊贵的客户提供极致的服务。
参考技术A MQTT是一项消息传递技术,由IBM再2001年发布。
总结一下,机制就是使用一个代理服务器messagebroker,
客户端client连接上这个服务器,然后告诉服务器说,我可以接收哪些类型的消息,
同时,client也可以发布自己的消息,这些消息根据协议的内容,可以被其他client获取。
只要手机客户端,连上服务器,然后就可以接收和发布消息了,不用自己写socket什么了,
低带宽,低耗电量,代码量也少,很简单吧。
package com.pig.test.mqtt;
import com.ibm.mqtt.MqttClient;
import
com.ibm.mqtt.MqttException;
import com.ibm.mqtt.MqttSimpleCallback;
public class SubscribeClient
private final static String
CONNECTION_STRING = "tcp://192.168.1.60:1883";
private final static boolean
CLEAN_START = true;
private final static short KEEP_ALIVE =
30;//低耗网络,但是又需要及时获取数据,心跳30s
private final static String CLIENT_ID =
"client1";
private final static String[] TOPICS =
"Test/TestTopics/Topic1",
"Test/TestTopics/Topic2",
"Test/TestTopics/Topic3",
"tokudu/client1"
;
private
final static int[] QOS_VALUES = 0, 0, 2,
0;
//////////////////
private MqttClient mqttClient =
null;
public SubscribeClient(String i)
try
mqttClient =
new MqttClient(CONNECTION_STRING);
SimpleCallbackHandler
simpleCallbackHandler = new
SimpleCallbackHandler();
mqttClient.registerSimpleHandler(simpleCallbackHandler);//注册接收消息方法
mqttClient.connect(CLIENT_ID+i,
CLEAN_START, KEEP_ALIVE);
mqttClient.subscribe(TOPICS,
QOS_VALUES);//订阅接主题
/**
*
完成订阅后,可以增加心跳,保持网络通畅,也可以发布自己的消息
*/
mqttClient.publish(PUBLISH_TOPICS, "keepalive".getBytes(), QOS_VALUES[0],
true);
catch (MqttException e)
// TODO Auto-generated
catch block
e.printStackTrace();
/**
* 简单回调函数,处理client接收到的主题消息
* @author pig
*
*/
class SimpleCallbackHandler implements MqttSimpleCallback
/**
* 当客户机和broker意外断开时触发
* 可以再此处理重新订阅
*/
@Override
public void connectionLost() throws Exception
//
TODO Auto-generated method
stub
System.out.println("客户机和broker已经断开");
/**
* 客户端订阅消息后,该方法负责回调接收处理消息
*/
@Override
public void
publishArrived(String topicName, byte[] payload, int Qos, boolean retained)
throws Exception
// TODO Auto-generated method
stub
System.out.println("订阅主题: " +
topicName);
System.out.println("消息数据: " + new
String(payload));
System.out.println("消息级别(0,1,2): " +
Qos);
System.out.println("是否是实时发送的消息(false=实时,true=服务器上保留的最后消息): " +
retained);
/**
* 高级回调
* @author pig
*
*/
class AdvancedCallbackHandler implements MqttSimpleCallback
@Override
public void connectionLost() throws Exception
//
TODO Auto-generated method stub
@Override
public void publishArrived(String arg0, byte[] arg1, int
arg2,
boolean arg3) throws Exception
// TODO Auto-generated
method stub
/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated
method stub
new SubscribeClient("" + i);
broker服务器,MQTT的jar包,记得下载啊,没有就消息我咯~
到这里,如果完成IBM的MQTT协议实现push消息的实例的,
都会有个问题,好像没考虑到安全问题,如果客户端连上来作乱怎么办呢?
上面用的broker时rsmb的,mqtt的简单服务器。
IBM已经推出了MQTT V3.1版本,已经加入了安全验证机制,不要怕啦。
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦本回答被提问者和网友采纳
怎么实现服务器给android客户端主动推送消息
采用MQTT协议实现Android推送功能是一种解决方案。MQTT是一个轻量级的消息发布/订阅协议,是实现基于手机客户端的消息推送服务器的理想解决方案。 常见的解决方案实现原理:1、轮询(Pull)方式:客户端定时向服务器发送询... 查看详情
mqtt是ibm开发的一个即时通讯协议,构建于tcp/ip协议上,是物联网iot的订阅协议,借助消息推送功能,可以更好地实现远程控制
...。MQTT构建于TCP/IP协议上,面向M2M和物联网IoT的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了MQTTv3.1协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息... 查看详情
mqtt学习笔记
...一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了MQTTv3.1协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息... 查看详情
移动互联网消息推送原理:长连接+心跳机制(mqtt协议)
...长连接呢: 在写之前,我们首先了解一下为什么Android维护长连接需要心跳机制,首先我们知道,维护任何一个 查看详情
android消息推送gcm、xmpp、mqtt三种方案的优劣,越仔细越好,有具体分析更好!
新手才学习的android,求大神解答,回答完善会加分。大神们都睡着了吗?咋就没人回答喃android消息推送GCM、XMPP、MQTT三种方案的优劣:1、GCM服务(GoogleCloudMessaging)优点:Google提供的服务、原生、简单,无需实现和部署服务端... 查看详情
android中使用mqtt(第一篇)
参考技术AMQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议。它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。它的设计思想是轻... 查看详情
android项目必备app消息推送(代码片段)
...2DM2.轮询3.SMS信令推送4.MQTT协议5.XMPP协议6.使用第三方平台Android中MQTT的使用1.集成2.具体代码3.项目地址前言今天来讲讲推送这件小事,事虽小,要做好却不容易。推送难,难于上青天。我们在讨论Android手机上的推送时... 查看详情
互联网推送服务原理:长连接+心跳机制(mqtt协议)
...接呢: 在写之前,我们首先了解一下为什么Android维护长连接需要心跳机制,首先我们知 查看详情
android消息推送,使用mqtt协议,谁有用java写过服务端
...考技术Bpackagecom.zgnet.billing.service;importorg.json.JSONObject;importandroid.annotation.SuppressLint;importandroid.app.AlarmManager;importandroid.app.NotificationManager;importandroid.app.PendingIntent;importandroid.app.Service;importandroid.content.BroadcastReceiver;importandroid.content.Cont... 查看详情
android项目必备(三十八)-->app消息推送(代码片段)
...2DM2.轮询3.SMS信令推送4.MQTT协议5.XMPP协议6.使用第三方平台Android中MQTT的使用1.集成2.具体代码3.项目地址前言今天来讲讲推送这件小事,事虽小,要做好却不容易。推送难,难于上青天。我们在讨论Android手机上的推送时... 查看详情
使用极光推送实现分组发送和服务端集成
...用开发中越来越重要,几乎成为所有App必备的功能,由于Android本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了提供消息推送服务的诸多产品,例如:百度云、个推、极光... 查看详情
android系统的app消息推送机制
...性低使用别人的服务器,所以你懂的。服务会被杀死由于Android系统的机制,后台推送Service会被各种主动的或是被动的行为给杀死,而服务一旦被杀死,意味着就接收不到推送消息。3.第三方推送服务方式的特点第三方服务基本... 查看详情
5g对mqtt有啥影响?
随着5G的到来,之前针对物联网行业采用的MQTT协议(解决不稳定网络环境)有什么改变?您好,MQTT在物联网应用中的主要优势有:1)可靠传输:MQTT可以保证消息可靠安全的传输,并可以与企业应用简易集成;2)消息推送:支... 查看详情
mqtt协议学习:001-有关概念入门(代码片段)
背景MQTT协议是物联网中常见的协议之一,"轻量级物联网消息推送协议"概念MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常... 查看详情
基于mqtt协议谈谈物联网开发
1.MQTT协议:MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于TCP/IP实现发布/订阅模式的应用层协议,其主要特点有:(1)基于发布/订阅模式,应用程序解耦;(2)基于TCP/IP建立网络连接;(3)协议交换最小化,降低网络流量; 2... 查看详情
转:mosquitto源码分析
...,手机、嵌入式计算机、微型控制器等移动设备。Mosquitto采用出版/订阅的模式实现MQTT协议,这种设计模式将通信终端之间的关系统一到服务程序中进行管理,可极大减 查看详情
酷炫mqtt实现消息推送(代码片段)
首先在实现本功能之前我们需要储备一下预备知识,大家可以看我的前两篇文章以及官网,了解MQTT的基本常识:MQTT入门篇MQTT服务器Mosquitto安装及使用MQTT官网在步入正题之前先给大家发放个福利,介绍一款MQTT插件... 查看详情
物联网mqtt协议分析和开源mosquitto部署验证
在《物联网核心协议—消息推送技术演进》一文中已向读者介绍了多种消息推送技术的情况,包括HTTP单向通信、Ajax轮询、Websocket、MQTT、CoAP等,其中MQTT协议为IBM制定并力推,其具有开放、简单、轻量级以及易于实现的特... 查看详情