ZeroMQ 上的 NodeJS 点对点通信

NodeJS peer-peer communication on ZeroMQ

有几个 NodeJS 应用程序,它们会在 'Zeromq' 上交谈并互相提供指令。

ZeroMQ 示例更多 pull/push,并且在点对点通信方面没有找到太多。

但是,ZeroMQ 确实支持点对点通信,示例在 python 中。所以分享在 NodeJS 中对我有用的代码。

此问题的解决方案是使用 'pair' 选项连接套接字。

//Peer Client code
const socket = require(`zeromq`).socket(`pair`);
const address = process.env.ZMQ_PUB_ADDRESS || `tcp://127.0.0.1:3000`;
console.log(`Connecting to ${address}`);
socket.connect(address);
socket.on(`message`, function (msg) {
console.log(`Message received: ${msg}`);
});

const sendMessage2 = function () {
    const message = `Ping 2`;
    console.log(`Sending 2 '${message}'`);
    socket.send(message);
};
setInterval(sendMessage2, 30000);

//Peer Server Code
const socket = require(`zeromq`).socket(`pair`);
const address = process.env.ZMQ_BIND_ADDRESS || `tcp://127.0.0.1:3000`;  
console.log(`Listening at ${address}`);
socket.bindSync(address);

const sendMessage = function () {
    const message = `Ping 1`;
    console.log(`Sending 1 '${message}'`);
    socket.send(message);
};
setInterval(sendMessage, 2000);

socket.on(`message`, function (msg) {
    console.log(`Message received 2: ${msg}`);
});