2017-01-03 7 views
0

スイッチの状態が変更されたり、フォームが入力されたり送信されたりすると、mqttブローカーにメッセージを公開できるWebアプリケーションを設計したいと思います。mqttライブラリを使用してメッセージを公開できますノード。私はまた、javascriptとjqueryを使用してhtmlページ上で変更されると、通常のスイッチ状態を検出することができます。ここでノードappからmqtt publish関数を呼び出したいと思います。私はどうしますか?jqueryを使用したmqttのNodejs Webアプリケーション

ここで通常のHTMLファイルswitch.html

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="switch.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script src="switch.js"></script> 
</head> 
<body> 

<h2>Toggle Switch</h2> 


<label class="switch" id = "switchLabel1"> 
    <input type="checkbox" id = "switch1"> 
    <div class="slider round"></div> 
</label> 

</body> 
</html> 

スイッチ状態はindex.jsをMQTTする

$(document).ready(function() { 
    $('#switch1').attr('checked', true); 
    $('#switch1').click(function(){ 

     if($(this).prop("checked") == true){ 
      console.log("switch1 is checked."); 
     } 

     else if($(this).prop("checked") == false){ 
      console.log("switch1 is unchecked."); 
     } 

    }); 
}); 

Nodejsアプリ公開メッセージをswitch.js検出するJavaScriptです。 MQTTライブラリーはnpmを使用してインストールされます。私が何をしたいか

var mqtt = require('mqtt') 
var client = mqtt.connect('mqtt://192.168.15.3') 

client.on('connect', function() { 
    client.subscribe('mqtt_node_subscribe') 
    client.publish('mqtt_node_publish', 'Hello mqtt') 
}) 

client.on('message', function (topic, message) { 
    // message is Buffer 
    console.log(message.toString()) 
}) 

はコールclient.publish(「トピック」、「メッセージ」)であるとき、代わりにconsole.logのswitch.jsで

私はそれは、クライアントが定義されていないと言うことを行うと、私はjsと実行中のノードの両方をマージしようとしましたが、$は定義されていません。私は、ノードアプリケーションにjqueryを含めてみました。だから私はノードを使用してjQueryなどを使用してこのWebアプリケーションを提供するメソッドが必要です。

+0

'192.168.15.3'には' mqtt'サーバがありますか? –

+0

はい、mqttサーバーは192.168.15.3で動作しています –

+0

クライアント側のmqtt/websocketライブラリを使用してサーバーに接続する必要があります(Web javascriptを使用しています)。 –

答えて

0

WebSocketでのMQTTは難しいアプローチです。同じ作業はsocket.ioを使って行うことができます。これは、トピックの機能がメッセージを発行し、購読する機能を提供するjsベースのライブラリです。試してみる。

関連する問題