ZeroMQ (zmq) Router-Dealer

Date: 2018-07-14
const zmq = require('zeromq');
const address = 'tcp://127.0.0.1:12345';

let router = zmq.socket('router');

router.bind(address, (err) => {
    if (err) {
        console.log(err);
    } else {
        console.log('Listening on 5563...');
    }
});

router.on('message', (...args) => {
    let msg = args.map((a) => a.toString());
    let id = args[0];

    setTimeout(() => {
        let n = Math.ceil(Math.random() * 50) - 10;
        router.send([id, "weather", n, msg[1]]);
    }, 100);
});
const zmq = require('zeromq');
const address = 'tcp://127.0.0.1:12345';

var dealer = zmq.socket('dealer');
dealer.connect(address);
dealer.identity = String(Math.random()).substring(2);

dealer.on('message', (...args) => {
    let msg = args.map((a) => a.toString());
    console.log('received', msg);
});

setInterval(() => {
    let msg = ["weatherinfo" + dealer.identity];
    console.log('send', msg);
    dealer.send(msg);
}, 30);

 

const zmq = require('zeromq');
const address = 'tcp://127.0.0.1:12345';
const net = require('net');

const keyPair = zmq.curveKeyPair();
let router = new zmq.Router({
    curveServer: false,
    curvePublicKey: keyPair.publicKey,
    curveSecretKey: keyPair.secretKey,
    curveServerKey: 'Z-s:wV#DnaWa*I%^s!(xg^4)GSf^o2h1&E95Se.^'
});

const listen = async () => {
    for await (const [sender, msg] of router) {
        console.log("received: %s", Buffer.from(sender).toString('base64'), msg.toString());
        setTimeout(() => {
            let n = Math.ceil(Math.random() * 50) - 10;
            router.send([sender, "hoi12345#"]);
        }, 100);
    }
}

const listenForEvents = async () => {
    for await (event of router.events) {
        console.log(`${event.type} ${JSON.stringify(event)}`)
    }
}

const run = async () => {
    await router.bind(address);
    await Promise.all([ 
        listen(),
        listenForEvents()
    ]);
};

run();
const zmq = require('zeromq');
const fs = require('fs');

const address = 'tcp://127.0.0.1:12345';
let i = 1;
const run = async () => {    
    const fileName = "server.json";
    let keyPair = null;

    if (fs.existsSync(fileName)) {
        keyPair = JSON.parse(fs.readFileSync("server.json"));
    } else {
        keyPair = zmq.curveKeyPair();
        fs.writeFileSync("server.json", JSON.stringify(keyPair, null, 4));    
    }

    var dealer = new zmq.Dealer({
        curveServer: true,
        curvePublicKey: keyPair.publicKey,
        curveSecretKey: keyPair.secretKey,
    });

    dealer.connect(address);

    setInterval(() => {
        let msg = [[ "weatherinfo", i ]]; // + dealer.identity
        i += 1;
        console.log('send', msg);
        dealer.send(msg);
    }, 300);

    console.log("receiving...");
    for await (const [msg] of dealer) {
        console.log("received: %s", msg.toString())
    }
}

run();
11620cookie-checkZeroMQ (zmq) Router-Dealer