mirror of
https://gitlab.silvrtree.co.uk/martind2000/SODashServer.git
synced 2025-02-11 10:49:21 +00:00
Added a socket angel to force reconnection to the MQTT WS when it disconnects. If no messages are received from it for 60 seconds it forces a disconnect.
This commit is contained in:
parent
f0c04db85d
commit
7c5abc894b
1
app.js
1
app.js
@ -89,6 +89,7 @@ busEmitter.on('projectorOff', mqttConnect.projectorOff);
|
|||||||
|
|
||||||
|
|
||||||
busEmitter.on('connectWS', mqttConnect.connectWS);
|
busEmitter.on('connectWS', mqttConnect.connectWS);
|
||||||
|
busEmitter.on('restartMQTTSocket', mqttConnect.restartMQTTSocket);
|
||||||
|
|
||||||
mqttConnect.setupPing();
|
mqttConnect.setupPing();
|
||||||
cal.startController(busEmitter);
|
cal.startController(busEmitter);
|
||||||
|
@ -29,9 +29,11 @@ var live = true;
|
|||||||
|
|
||||||
logger.warn('!!! Live? ', live);
|
logger.warn('!!! Live? ', live);
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
restartTimer : 0,
|
||||||
pingTimer: 0,
|
pingTimer: 0,
|
||||||
statuses: {},
|
statuses: {},
|
||||||
sockets: null,
|
sockets: null,
|
||||||
|
wsClient: null,
|
||||||
watches: {},
|
watches: {},
|
||||||
client: null,
|
client: null,
|
||||||
projector: live ? 'Projector' : 'ProjectorISP15',
|
projector: live ? 'Projector' : 'ProjectorISP15',
|
||||||
@ -212,7 +214,7 @@ module.exports = {
|
|||||||
|
|
||||||
},
|
},
|
||||||
sendRefresh: function() {
|
sendRefresh: function() {
|
||||||
logger.debug('+ Send refresh', this.statuses);
|
// logger.debug('+ Send refresh', this.statuses);
|
||||||
|
|
||||||
for (var item in this.statuses) {
|
for (var item in this.statuses) {
|
||||||
if (this.statuses.hasOwnProperty(item)) {
|
if (this.statuses.hasOwnProperty(item)) {
|
||||||
@ -220,7 +222,21 @@ module.exports = {
|
|||||||
this.emitter.emit('sendSocket', this.statuses[item]);
|
this.emitter.emit('sendSocket', this.statuses[item]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.debug('+ Send refresh');
|
// logger.debug('+ Send refresh');
|
||||||
|
},
|
||||||
|
preRestartConnection: function() {
|
||||||
|
logger.debug('Restart connection...');
|
||||||
|
//this.emitter.emit('restartMQTTSocket', this);
|
||||||
|
logger.debug(this);
|
||||||
|
this.restartMQTTSocket();
|
||||||
|
},
|
||||||
|
startMQTTSocket:function() {
|
||||||
|
logger.warn('Restarting socket?');
|
||||||
|
this.connectWS();
|
||||||
|
},
|
||||||
|
restartMQTTSocket: function() {
|
||||||
|
this.wsClient.disconnect();
|
||||||
|
// setTimeout(this.startMQTTSocket.bind(this), 15000);
|
||||||
},
|
},
|
||||||
connectWS: function(connectCB) {
|
connectWS: function(connectCB) {
|
||||||
|
|
||||||
@ -232,12 +248,19 @@ module.exports = {
|
|||||||
var api_key = 'a-qz0da4-dfwwdkmkzr';
|
var api_key = 'a-qz0da4-dfwwdkmkzr';
|
||||||
var auth_token = '9txJEf3Cjy7hkSOvkv';
|
var auth_token = '9txJEf3Cjy7hkSOvkv';
|
||||||
|
|
||||||
var wsClient = new Messaging.Client(hostname, 8883, clientId);
|
this.wsClient =new Messaging.Client(hostname, 8883, clientId);
|
||||||
|
//var wsClient = new Messaging.Client(hostname, 8883, clientId);
|
||||||
|
var wsClient = this.wsClient;
|
||||||
var clientStatus = {connected: false, subscribed: false, deviceConnected: false};
|
var clientStatus = {connected: false, subscribed: false, deviceConnected: false};
|
||||||
var sensorData = {};
|
var sensorData = {};
|
||||||
|
|
||||||
|
|
||||||
|
this.restartTimer = setTimeout(this.preRestartConnection.bind(this), 60000);
|
||||||
|
|
||||||
wsClient.onMessageArrived = function(msg) {
|
wsClient.onMessageArrived = function(msg) {
|
||||||
logger.info("Message from :" + msg.destinationName);
|
//logger.info("Message from :" + msg.destinationName);
|
||||||
|
clearTimeout(self.restartTimer);
|
||||||
|
self.restartTimer = setTimeout(self.preRestartConnection.bind(self), 60000);
|
||||||
clientStatus.deviceConnected = true;
|
clientStatus.deviceConnected = true;
|
||||||
sensorData = JSON.parse(msg.payloadString);
|
sensorData = JSON.parse(msg.payloadString);
|
||||||
// Logger.debug(sensorData);
|
// Logger.debug(sensorData);
|
||||||
@ -253,6 +276,8 @@ module.exports = {
|
|||||||
wsClient.onConnectionLost = function(e) {
|
wsClient.onConnectionLost = function(e) {
|
||||||
logger.error('+ wsClient.onConnectionLost');
|
logger.error('+ wsClient.onConnectionLost');
|
||||||
logger.error(e);
|
logger.error(e);
|
||||||
|
logger.warn('Going to force a restart of the Socket.. Hold on.');
|
||||||
|
setTimeout(self.startMQTTSocket.bind(self), 15000);
|
||||||
//self.emitter.emit('sendSocket',{id: 'deviceLost',data: e});
|
//self.emitter.emit('sendSocket',{id: 'deviceLost',data: e});
|
||||||
//var wsReconnectTimer = setTimeout(function() {logger.debug('TRYING TO RECONNECT TO MQTT');self.emitter.emit('connectWS');}.bind(this),30000);
|
//var wsReconnectTimer = setTimeout(function() {logger.debug('TRYING TO RECONNECT TO MQTT');self.emitter.emit('connectWS');}.bind(this),30000);
|
||||||
logger.error('- wsClient.onConnectionLost');
|
logger.error('- wsClient.onConnectionLost');
|
||||||
@ -323,6 +348,7 @@ module.exports = {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user