WebSocket похож на MQTT, но без особого протокола о том, как клиент или сервер должны взаимодействовать друг с другом.
Поскольку вы уже реализовали MQTT в NodeJS, я бы рекомендовал использовать следующий шаблон для установления связи.
IOT -> отправляет DATA через MQTT -> Сервер получает DATA -> Сервер отправляет DATA через WebSocket -> Клиент получает DATA.
Я использую socket.io, популярную библиотеку WebSocket для демонстрации.
ШАГ 1: Установка Socket.io
НПМ установить Socket.io
ШАГ 2: реализация на стороне сервера
var app = require('express')();
var http = require('http').Server(app);
var mqtt = require('mqtt'); // This is for demonstration only, use your existing mqtt library instead.
var client = mqtt.connect('mqtt://test.mosquitto.org');
var io = require('socket.io')(http);
io.on('connection', function(socket) { // Whenever a new client is connected, this event is triggered
console.log("[Live] A new client connected.", socket.id);
socket.on('disconnect', function(socket) {
console.log("[Live]", socket.id, "got disconnected.");
});
});
client.on('message', function (topic, message) {
io.emit('live', message.toString()); // io.emit(channel, message);
// Broadcasts message to all client instance's that are subscribed to 'live' channel.
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
ШАГ 3: Реализация на стороне клиента
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.2/socket.io.js"></script>
<script>
var socket = io('http://localhost:3000');
socket.on('live', function (data) { // This event is triggered when server publishes data to 'live' channel
console.log(data);
});
</script>
Простой, не так ли. Надеюсь, поможет.
Одним из возможных способов является использование WebSockets для подключения NodeJS & HTML (front-end) в режиме реального времени. Это когда вы получаете данные в узле, передаете его в websockets и в интерфейсе обрабатываете данные соответствующим образом. –
Код WebSocket реализован на стороне сервера или на стороне клиента (браузер)? – FabioDev
Оба. Клиент должен открыть соединение с сервером. Когда есть открытое соединение, сервер может передавать данные клиенту без каких-либо новых запросов или подключений. –