mqtt协议详解(android消息推送GCM、XMPP、MQTT三种方案的优劣,越仔细越好,有具体分析更好!)

本文目录
android消息推送GCM、XMPP、MQTT三种方案的优劣,越仔细越好,有具体分析更好!
android消息推送GCM、XMPP、MQTT三种方案的优劣:
1、GCM服务(Google Cloud Messaging)优点:Google提供的服务、原生、简单,无需实现和部署服务端。缺点:Android版本限制,该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。
2、XMPP协议(Openfire + Spark + Smack)优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。
3、MQTT协议优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域,且已有C++版的服务端组件rsmb。缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。
d消息推送可以去了解一下极光,极光是个不错的平台。极光紧密围绕移动开发者需求,打造的开发者服务平台,可以提供一站式SaaS服务,通过全面覆盖PC、手机、传感器、无线路由器等多种设备数据,打造全域数据平台。当前,不断更新的SaaS产品及服务已深受国内百万开发者的认可和信赖。
如何用wireshark分析mqtt协议
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,
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版本,已经加入了安全验证机制,不要怕啦。
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
如何采用mqtt协议实现android消息推送
使用一个代理服务器message broker,客户端client连接上这个服务器,然后告诉服务器,可以接收哪些类型的消息,同时client也可以发布自己的消息,这些消息根据协议的内容,可以别的client获取。这样就实现了消息推送。
消息推送是通过一定的技术标准或协议,在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。
如果想要使用消息推送,推荐使用深圳极光的消息推送系统。深圳极光是国内首个为移动应用开发者提供专业、高效的消息推送服务的产品。品牌成长的过程,就是与客户肩并肩迈向成功的过程。极光将以市场为导向,以创新为动力,以技术为支持,不断用心努力,为每一位尊贵的客户提供极致的服务。

本文相关文章:
android退出程序代码(怎么在android实现退出功能)
2026年9月2日 17:20
activity跳转到另一个activity(android 怎么从activity跳到另一个activity的fragment)
2026年8月20日 00:50
android mvvm框架(android 怎么使用mvvm框架)
2026年8月11日 19:40
accdata(安卓手机,文件管理android的data里com.snssdk.api.embed是什么文件)
2026年7月13日 02:20
android sdk安装失败(手机androidsdk安装失败怎么办)
2026年7月6日 01:10
更多文章:
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00



