How to check if Azure IOT Hub sender has stopped using node.js and socket.io -
i have 2 programs, sender , receiver. sender sends message device on iot hub , receiver in turn receives messages long sender sends them. using socket.io broadcast messages connected clients. when sender stopped, receiver stops last message sent sender going broadcasted infinitely until close receiver or sender starts again , sends new messages. last message duplicated , broadcasted infinitely. how check if sender program has stopped?
this sender prrogram:
var clientfromconnectionstring = require('azure-iot-device-mqtt').clientfromconnectionstring; var message = require('azure-iot-device').message; var connectionstring = 'conn_string' var client = clientfromconnectionstring(connectionstring); var avgtemperature = 20; var printresult = function (err, res) { if (err) { console.log('send error: ' + err.tostring()); return; } console.log('send status: ' + res.constructor.name); }; setinterval(function () { var currenttemperature = avgtemperature + (math.random() * 10) - 2; var data = json.stringify({ deviceid: 'test', temperature: currenttemperature, latitude: 50.286264, longitude: 19.104079, time: date.now() }); var message = new message(data); console.log("sending message: " + message.getdata()); client.sendevent(message, printresult); }, 5000); this receiver , socket.io broadcasts client:
var app = require('express')(); var http = require('http').server(app); var io = require('socket.io')(http); var eventhubclient = require('azure-event-hubs').client; var connectionstring = 'conn_string' var printerror = function (err) { console.log(err.message); }; var result; var printmessage = function (message) { console.log('message received: '); result = json.stringify(message.body); console.log('message: ' + result); /* io.on('connection', function(socket){ socket.on('chat message', function(msg){ io.emit('chat message', result); }); }); */ console.log(''); }; count =0; app.get('/', function(req, res){ res.sendfile(__dirname + '/index.html'); }); io.on('connection', function(socket){ console.log('user connected'); socket.on('chat message', function(msg){ io.emit('chat message', result); }); socket.on('disconnect', function(){ console.log('user disconnected'); socket.removealllisteners('disconnect'); io.removealllisteners('connection'); }); }); var client = eventhubclient.fromconnectionstring(connectionstring); client.open() .then(client.getpartitionids.bind(client)) .then(function (partitionids) { return partitionids.map(function (partitionid) { return client.createreceiver('$default', partitionid, { 'startaftertime' : date.now()}).then(function(receiver) { console.log('created partition receiver: ' + partitionid) receiver.on('errorreceived', printerror); receiver.on('message', printmessage); }); }); }) .catch(printerror); http.listen(3000, function(){ console.log('listening on *:3000'); });
according code. whenever sender stops sending, receiver not receive messages , wait sender send new messages. however, if still want check, can use sequence numbers sender messages or associate id them check duplicates.
Comments
Post a Comment