Просматривая код https://github.com/alepez/omxdirector, я вижу много фрагментов, где события испускаются процессом omxdirector
var play = function (videos, options) {
if (omxProcess) {
if (!paused) {
return false;
}
sendAction('pause');
paused = false;
that.emit('play');
return true;
}
if (!videos) {
throw new TypeError("No files specified");
}
if (typeof videos !== 'string' && !util.isArray(videos)) {
throw new TypeError("Incorrect value for videos: " + videos);
}
open(videos, options);
that.emit('play');
return true;
};
Мой вопрос: кто потребляет эти события? Это на стороне сервера или на стороне клиента?
Я использую socket.io для связи между моим внешним клиентом angularjs и экспресс-сервером. Моя реализация выглядит следующим образом:
СЕРВЕР: Отвечает на запрос клиента «song:play»
var omx = require('omxdirector');
omx.setVideoDir('/home/pi/webapp/songs');
{...}
socket.on('song:play', function(data,fn) {
if(omx.isLoaded()) {
if(!omx.isPlaying()) {
if(data.song === currentSong) {
omx.play();
} else {
omx.stop();
omx.play(data.song, {audioOutput: 'local'});
currentSong = data.song;
}
} else {
omx.stop();
omx.play(data.song, {audioOutput: 'local'});
currentSong = data.song;
}
} else {
omx.play(data.song, {audioOutput: 'local'});
currentSong = data.song;
}
fn(data);
});
{...}
КЛИЕНТ: Издает «song:play»
function playSong(song) {
socket.emit('song:play', { song: song }, function(data) {
$scope.currentSong = data.song;
});
// Songs.get({ song: song, action: 'play'}).$promise.then(function(data) {
// $scope.currentSong = data.song;
// });
$scope.isPlaying = true;
}
Где именно подходит эмиттер omxdirector? Я не хочу задавать этот вопрос конкретно для omxdirector, но применим к любому приложению nodejs с экземпляром EventEmitter? Кто потребляет эти события?