2017-01-03 3 views
0

Я хочу создать веб-приложение, способное публиковать сообщение на брокере mqtt при изменении состояния переключателя или заполнении и отправке формы и т. Д. Я могу опубликовать сообщение с помощью библиотеки mqtt на узел. Я также могу обнаружить нормальное состояние переключателя, когда оно изменено на странице html с помощью javascript и jquery. Теперь я хочу вызвать функцию публикации mqtt из приложения узла здесь. Как я это сделаю?Веб-приложение Nodejs для mqtt с помощью jquery

Вот нормальный 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> 

Javascript, который определяет состояние переключателя switch.js

$(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 приложение публикации сообщений в MQTT index.js. Библиотека 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 и т. Д., Как есть.

+0

Есть ли какие-нибудь 'mqtt' сервер работает в 192.168.15.3'? –

+0

Да, сервер mqtt работает на 192.168.15.3 –

+0

Вы должны использовать библиотеку mqtt/websocket на стороне клиента, чтобы сначала подключиться к серверу (я имею в виду веб-javascript). –

ответ

0

MQTT над websocket - это сложный подход. Такую же работу можно выполнить с помощью socket.io. Это js-библиотека, предоставляющая возможности тем публиковать и подписывать сообщения. Попробуйте.

Смежные вопросы