Итак, ситуация такова, что у меня есть множество источников данных, которые обеспечивают поток сообщений с внешних устройств. Некоторые отправляют сообщения через последовательный порт, некоторые через UDP, некоторые через Telnet. Я хочу создать небольшой Node.js система, которая получает сообщения от каждого из этих источников. Всего около 20 источников.
У меня есть множество мест, куда я затем хочу передать эти сообщения, и я хочу разрешить клиентам подключаться через telnet и получать эти сообщения.
Я думаю, вы могли бы назвать это «служебной шиной» или «шиной сообщений»..
На данный момент я просто обдумываю идеи о том, как его структурировать, мне не нужен один огромный файл node.js, который делает все.
Я хочу, чтобы каждый из «приемников» находился во внешних файлах .js в моем основном файле node.js. Мой подход ниже OK и есть ли какие-либо улучшения, которые я мог бы внести в свой подход.
Основной файл Node.js
Втягивает два «приемника». Каждый из них будет обрабатывать входящие сообщения из источника данных.
var sys = require("sys");
AVLReceiver = require("./avlreceiver.js").AVLReceiver();
PagerReceiver = require("./pagerreceiver.js").PagerReceiver();
pagerreceiver.js — пример получателя сообщений
Получает сообщения от последовательного порта.
var serialport = require("serialport");
var sys = require("sys");
var PagerReceiver = {};
PagerReceiver.initializePort = function () {
this.serialport = new serialport.SerialPort("/dev/ttyS0", {
parser: serialport.parsers.readline("\n"), baudrate: 57600
});
this.serialport.on("data", this.processMessage);
};
PagerReceiver.processMessage = function (data) {
//deal with the message
};
PagerReceiver.initializePort();
exports.PagerReceiver = function() {
return PagerReceiver;
};
Будет ли это подходящим способом разбить систему node.js? Любые комментарии к javascript также будут с благодарностью получены. Также любые комментарии о любых других архитектурных подходах, которые я должен рассмотреть для создания шины сообщений в node.js, были бы супер.
Спасибо за чтение,
Дункан.