1.配置环境
在原项目的js文件夹下,放入mqttConfig.js+mqttloader.js+mqttws31.js
在.html中引入mqtt,body中
<script src="js/mqttloader.js"></script>
android项目下:
js文件夹下,放入mqttPlugin.js
native下src中,放入org整个文件夹,com文件夹下放入crccontact整个文件夹,拷入后会遇到一些error,这时将error地方的class名字改成自己的class名即可。
AndroidMainfest.xml中加入<service android:name="com.crccontact.mqtt.android.service.MqttService"/>
native文件夹下xml中config.xml中注册phoneGap的插件
<plugin
name="MqttPlugin"value="com.crccontact.mqtt.android.cordova.plugin.MqttPlugin"/>
<plugin
name="AMRPlugin"value="com.crccontact.mqtt.android.cordova.plugin.AMRPlugin"/>
2.原理
订阅(类型,可靠参数)->可接受自己订阅的类型的消息
发布(类型,内容,可靠参数)
下载mqtt的包,安装后,打开即开启了服务器,ia92里J2SE打开wqttSample.jar打开就是一个客户端,可以模拟mqtt的过程及调试代码
3.代码详解
在mqttConfig.js中加入关键代码
前面的基础配置:
var MQTT=MQTT?MQTT:{};
MQTT.host="192.168.1.111";
MQTT.port=1883;
MQTT.connectOptions={cleanSession:false};
MQTT._isMqttClientInit=false;
关键代码,订阅
initSub(MQTT.host,MQTT.port,type);
initSub(host,port,type)->
设置mqtt的client
client=newMQTTPlugin(MQTT.host,Number(MQTT.port),MQTT.clientId);
设置消息到达时的回调函数
client.setMessageCallback(MQTT.onMessageArrived);
设置subscribe成功的函数
MQTT.connectOptions['onSuccess']=onConnect;
var onConnect=function(){
subscribeType(type);
}
//订阅消息
function subscribeType(type)->
var topics=[type,];
var qoses=[2,];
MQTT.client.subscribe(topics,qoses);
//发布消息
pub(type,msg,qos)->
MQTT.client.publish(type,msg,2,function(){}, function(error){alert("发送失 败!"+JSON.stringify(error));});
//消息到达的函数
MQTT.onMessageArrived=function(message){}->
topic=message.topic;
msg=message.payloadString;
4.要是想有提醒的话,需要修改android中的代码
在crccontact.mqtt的android下service中MqttService.java中void showNotification(String status)函数和
void showNotificationWithSound(String status)函数