Я практикуюсь с модулем ZeroMQ для создания Socket, но у меня проблема с шаблоном Proxy (Маршрутизатор / Маршрутизатор), я смог убедиться, что Клиент хорошо соединяется с Front и Worker с Back, нокогда оно приходит, чтобы отправить сообщение Front to Back или наоборот не отправлено, кто-нибудь знает почему?
Прикрепил код брокера, если необходимо, чтобы его мог предоставить код клиента или рабочего.
import * as zmq from 'zeromq'
const ipBrokerClient: string = 'tcp://*:4000'
const ipBrokerWorker: string = 'tcp://*:3000'
const idWorker: string = `worker_proxy_${process.pid}`
let frontend= zmq.socket('router'),
backend= zmq.socket('router')
let workers: Array<string> = []
export = {
loadFrontend(): void {
frontend.identity = 'frontend_proxy' + process.pid
frontend.bind(ipBrokerClient, function (err: string) {
if (err) throw err
console.log("Frontend in listening: " + frontend.identity)
frontend.on('message', function (...buffer: Array<Buffer>): void {
let idClient: Buffer = buffer[0],
empty: Buffer = buffer[1],
query: Buffer = buffer[2]
let interval = setInterval(function (): void {
if (workers.length > 0) {
console.log("Frontend send: " + query)
backend.send([workers.shift(), '', idClient, '', query])
clearInterval(interval)
}
}, 10)
})
})
},
loadBackend(): void {
backend = zmq.socket('router')
backend.identity = 'backend_proxy' + process.pid
backend.bind(ipBrokerWorker, function (err: string): void {
if (err) throw err
console.log("Backend in listening: " + backend.identity)
backend.on('message', function (...buffer: Array<Buffer>) {
console.log(buffer)
let idWorker: Buffer = buffer[0],
empty0: Buffer = buffer[1],
idClient: Buffer = buffer[2],
empty1: Buffer = buffer[3],
query: Buffer = buffer[4]
workers.push(idClient.toString())
console.log("Worker available: " + idClient)
frontend.send("Hello")
if (workers[0] != "READY") {
frontend.send([idClient, empty0, query])
}
})
})
},
loadBroker(): void {
this.loadFrontend()
this.loadBackend()
}
}
Извините, если вопрос не очень хорошо сделан, я новичок на форуме.
Спасибо