У меня есть 5 серверов, к которым я подключаюсь по net.Socket () и слушаю данные, поступающие с каждого сервера.Я храню все клиенты в массиве.Код выглядит так:
for (let controllerAndDoors of controllersAndDoors) {
let client = new net.Socket();
// add the client to the clients array
clients.push(client);
client.connect(controllerAndDoors.controller.Port, controllerAndDoors.controller.Ip, function () {
console.log('\x1b[32m%s\x1b[0m', `Connected to controller: ${client.remoteAddress}:${client.remotePort}`);
});
client.on('data', function (data) {
var date = new Date().toISOString();
console.log(`${date}: Received message from: ${client.remoteAddress}:${client.remotePort}`);
actionHandler.checkMessageFromController(client, data, controllerAndDoors);
});
client.on('timeout', function () {
console.log('Client connection timeout');
});
client.on('error', function (err) {
console.error('\x1b[31m%s\x1b[0m', err);
// try to reconnect
if (err.code === "ECONNRESET" || "ETIMEDOUT") {
client.connect(controllerAndDoors.controller.Port, controllerAndDoors.controller.Ip, function () {
console.log('\x1b[32m%s\x1b[0m', `Connected to controller: ${client.remoteAddress}:${client.remotePort}`);
});
}
});
client.on('end', function () {
console.log(`Disconnected from controller`);
});
client.on('close', function () {
console.log(`Connection closed`);
});
Теперь у меня также есть сервер rabbitmq, работающий на той же программе.Его работа заключается в том, чтобы слушать сообщения от клиентов.Каждое сообщение необходимо записать в сокет и дождаться ответа от сокета.Проблема в том, что мне нужно дождаться ответа и отправить его обратно в rabbitmq.Как я могу ждать ответа на сообщение?Кроме того, метод client.on ('data', ...) получает все сообщения.Я пытался реализовать что-то с помощью генератора событий, но безрезультатно ...