NEWS
[gelöst] UDP listener - EADDRINUSE
-
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
-
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
Da auf meinen Post keine Reaktion kam, habe ich entweder etwas falsch gemacht :thinking_face: , oder es hat keiner eine Antwort. Das lässt mich, ob der vielen Profis hier, “befürchten”, dass das nicht geht, die binds nochmals zu ändern ohne den javascript Adapter neu zu starten.
-
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
@womi
Teste mal welches Signal dein Skript erhält, wenn du
Das hier einbaustconst process = require('process'); process.on('exit', (code) => { console.log(`About to exit with code: ${code}`); }); -
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
-
@womi
Teste mal welches Signal dein Skript erhält, wenn du
Das hier einbaustconst process = require('process'); process.on('exit', (code) => { console.log(`About to exit with code: ${code}`); }); -
@womi Du kannst beim Stoppen des Skripts den Socket schließen:
onStop(() => { socket.close(); });@AlCalzone
Super, ganz herzlichen Dank! Klappt hervorragend.
Kann ich das ganze irgendwie als gelöst markieren? -
@AlCalzone
Super, ganz herzlichen Dank! Klappt hervorragend.
Kann ich das ganze irgendwie als gelöst markieren?