mqtt協定如果在浏覽器使用的話,那麼伺服器端就需要建立mosca服務和http服務,浏覽器頁面的mqtt連接配接到http服務端口
伺服器端:
方式一:
var mosca = require(\'mosca\');
var MqttServer = new mosca.Server({
port: 2000,
http: {
port: 3006,
bundle: true,
static: \'./\'
}
});
MqttServer.on(\'clientConnected\', function(client){
console.log(\'client connected\', client.id);
});
/**
* 監聽MQTT主題消息
**/
MqttServer.on(\'published\', function(packet, client) {
var topic = packet.topic;
console.log(\'message-arrived--->\',\'topic =\'+topic+\',message = \'+ packet.payload.toString());
//MQTT轉發主題消息
//MqttServer.publish({topic: \'test\', payload: \'sssss\'});
});
MqttServer.on(\'ready\', function(){
console.log(\'mqtt is running...\');
//MqttServer.authenticate = authenticate;
});
方式二:
var http = require(\'http\')
, httpServ = http.createServer()
, mosca = require(\'mosca\')
, mqttServ = new mosca.Server({port: 2000});
mqttServ.attachHttpServer(httpServ);
httpServ.listen(3006);
MqttServer.on(\'clientConnected\', function(client){
console.log(\'client connected\', client.id);
});
浏覽器用戶端://端口為http端口 mqtt://localhost:3006 和 ws://localhost:3006一樣,
web頁面沒有其他要求,沒有跨域問題
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--[if lt IE 7]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="#">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<div>hello mqtt</div>
<script src="../public/js/jquery-1.9.1.min.js"></script>
<script src="../public/mqtt.min.js"></script>
<script>
////端口為http端口 mqtt://localhost:3006 和 ws://localhost:3006一樣
var client = mqtt.connect(\'ws://localhost:3006\',{
});
// you add a ws:// url here
client.subscribe("mqtt/demo");
client.on(\'connect\', function () {
console.log(\'connected.....\');
// client.subscribe(\'test/\');
// client.publish(\'app2dev/\', \'Hello mqtt\');
});
client.on("message", function (topic, payload) {
alert([topic, payload].join(": "));
})
client.publish("mqtt/demo", "hello world!");
</script>
</body>
</html>