2016-05-12 3 views
1

У меня есть приложение-приложение Node.js, которое работает на моем домашнем сервере Debian 24/7.Обработка внешних триггеров в приложениях Node.js

Я хотел бы обработать триггеры, генерируемые motion, программа, которая контролирует видеосигнал от камер, установленных на одной машине. Motion может выполнять команду для определенных событий, например, когда обнаружено движение или потеряна связь с камерой.

Я могу написать сценарий, который будет обрабатывать эти события и записывать их в базу данных, а в моем демоне я могу непрерывно опробовать базу данных. Но это было бы крайне неэффективно, не так ли?

Каким будет оптимальный способ обработки внешних триггеров в приложениях Node.js?

ответ

0

Посмотрите на dnode. Это позволяет вам делать именно то, что вы ищете.

В вашем демоне у вас будет что-то вроде этого.

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

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

Затем вам нужно будет создать команду, которая будет вызывать движение

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

Я на самом деле не нужны обратные вызовы, просто * огонь и забыть * -Style сообщения процесса Node.js, хотя, если Я могу опустить обратный вызов, который он поместит. Фактически, коллега посоветовал мне использовать UNIX-сокеты, но я не уверен, что для них это правильный вариант. Как вы думаете? – heuels

+0

Вы эффективно используете UNIX-сокеты. Вы можете узнать больше об узлах и сокетах Unix здесь https://nodejs.org/api/net.html#net_server_listen_path_backlog_callback – RedJandal

+0

Спасибо, я посмотрю. – heuels