running node.js with forever to avoid crashing server
tillfly
Jul 31 2019 | 10:51 am
Hey,
i´m running a node.script which connects to a tcp server automatically after starting the max patch.
somehow the connection crashes after one to two hours. ( i can not be personally thats why i dont know exactly )
the patch runs as a standalone. the computer on which it runs was licensed in development but doesnt have a license right now, which should make no difference I think.
now I would like to run this code with forever to restart the node script immediatelly after crashing or figure out some other logic to restart after crashing...
how could I do this?
this is the node script:
// connection to max const path = require('path'); const maxApi = require('max-api'); const net = require('net'); var socketClient; var connected = false; var chunk = ""; var delimiter = ';'; reconnect(); function reconnect() { reconnectTimer = setInterval(function() { /* Instance socket on create window */ console.log('Try to connect'); // maxApi.outlet('Try to connect'); socketClient = net.connect({ host: 'x.x.x.x', port: 8080 }, () => { // 'connect' listener console.log('connected to server!'); clearInterval(reconnectTimer); //maxApi.outlet('connected to server'); //socketClient.write('world!\r\n'); socketClient.write("bla1,1:bla2,1;"); }); socketClient.on('error', function (ex) { console.log("sensor server error"); console.log(ex); }); // how to send data to max, test wich SocketTest 3.0v socketClient.on('data', (data) => { chunk += data.toString(); // Add string on the end of the variable 'chunk' //console.log(data.toString()); d_index = chunk.indexOf(delimiter); // Find the delimiter // While loop to keep going until no delimiter can be found while (d_index > -1) { try { string = chunk.substring(0,d_index); // Create string up until the delimiter console.log(string); //case AIN-0,value; //console.log(string); process(string); // Function that does something with the current chunk of valid json. } catch(e) { console.log(e); } chunk = chunk.substring(d_index+1); // Cuts off the processed chunk d_index = chunk.indexOf(delimiter); // Find the new delimiter } //console.log('Hello ' + person.prenom + "!"); }); }); } function process(string) { //console.log(obj.sensor_data.value); // value: 0 muss weiter an max // console.log(data.sensor_data.value); // to max msp string = string.substring(string.indexOf(',')+1); var data = parseInt(string, 10); maxApi.outlet(data); // body... } socketClient.on('end', () => { console.log('disconnected from server'); // CRASH FLAG HERE TO RESTART via "script start" to node.script object in Max? });