WebSocket ist ähnlich wie MQTT, aber ohne hervorgehobenes Protokoll darüber, wie ein Client oder Server miteinander kommunizieren soll.
Da Sie bereits MQTT in NodeJS implementiert haben, würde ich empfehlen, das folgende Muster zu verwenden, um die Kommunikation herzustellen.
IOT -> sendet Daten über MQTT -> Server empfängt DATEN -> Server sendet DATEN über WebSocket -> Client empfängt DATEN.
Ich benutze socket.io, eine populäre WebSocket-Bibliothek zum Zwecke der Demonstration. 1
STEP: Installation Socket.io
npm installieren Socket.io
SCHRITT 2: Serverseitige Implementierung
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');
});
Schritt 3: Clientseitige Implementierung
<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>
Einfach, nicht wahr? Ich hoffe es hilft.
Eine Möglichkeit besteht darin, WebSockets für die Verbindung von NodeJS & HTML (Frontend) in Echtzeit zu verwenden. Das ist immer dann der Fall, wenn Sie Daten in Node erhalten, diese an WebSockets übergeben und die Daten im Frontend entsprechend behandeln. –
WebSocket-Code ist serverseitig oder clientseitig (Browser) implementiert? – FabioDev
Beide. Der Client muss eine Verbindung mit dem Server herstellen. Sobald eine offene Verbindung besteht, kann der Server Daten an den Client senden, ohne neue Anforderungen oder Verbindungen zu erstellen. –