2016-05-12 15 views
1

Ich habe eine Node.js-Daemon-Anwendung, die rund um die Uhr auf meinem Debian-Heimserver läuft.Verarbeiten von externen Triggern in Node.js-Anwendungen

Ich möchte, dass die Trigger von Bewegung generiert, ein Programm, das das Videosignal von Kameras überwacht, die auf der gleichen Maschine installiert ist. Motion kann einen Befehl bei bestimmten Ereignissen ausführen, z. B. wenn eine Bewegung erkannt wurde oder die Kameraverbindung unterbrochen wurde.

Ich kann ein Skript schreiben, das diese Ereignisse verarbeitet und sie in der Datenbank aufzeichnet und in meinem Daemon kann ich die Datenbank kontinuierlich abfragen. Aber das wäre höchst ineffizient, oder?

Was wäre der optimale Weg, um externe Trigger in Node.js-Anwendungen zu verarbeiten?

Antwort

0

Werfen Sie einen Blick auf dnode. Sie können genau das tun, wonach Sie suchen.

In Ihrem Daemon werden Sie so etwas haben.

var dnode = require('dnode'); 
var server = dnode({ 
    transform : function (eventObject, cb) { 
     //handle the event 

     cb(callbackDataHere) 
    } 
}); 
server.listen(5004); 

Sie dann den Befehl erstellen müssen, die Bewegung

var dnode = require('dnode'); 

var d = dnode.connect(5004); 
d.on('remote', function (remote) { 

    var eventDataToSend = {} 

    remote.transform(eventDataToSend, function (s) { 
     //Do stuff with arguments sent back from the callback on the server 
    }); 
}); 
+0

nennen will ich eigentlich nicht Rückrufe brauchen, nur * Feuer und vergessen * -Stil-Nachrichten an Node.js Prozess, obwohl, wenn Ich kann den Callback weglassen, der passt. Eigentlich riet mir ein Mitarbeiter, UNIX-Sockel zu verwenden, aber ich bin mir nicht sicher, ob dies der richtige Anwendungsfall für sie ist. Was denken Sie? – heuels

+0

Sie verwenden effektiv UNIX-Sockets. Sie können mehr über Knoten und Unix-Sockets hier lesen https://nodejs.org/api/net.html#net_server_listen_path_backlog_callback – RedJandal

+0

Vielen Dank, ich werde es untersuchen. – heuels