(function (i) { var bus = nano.socket('bus'); var addr = 'inproc://bus' + i; bus.bind(addr); buses[addr] = bus; // Add a "response count" for each bus. // We want this to equal the number of other buses. bus.responseCount = 0; // Tally messages from other buses. bus.on('message', function (msg) { console.error('#', 'received message from', msg.toString(), 'on', addr) this.responseCount++; current++; if (this.responseCount == count - 1) { // All set! bus received all messages. } if (current == total) { // close all buses. Object.keys(buses).forEach(function (addr) { buses[addr].close(); }) } }) })(i);
constructor(name, socketType, ipcBaseAddr, onMsg) { this.name = name; this.socketType = socketType; this.socket = nanomsg.socket(socketType); this.ipcBaseAddr = ipcBaseAddr; this.onMsg = onMsg; socketId += 1; this.socketId = socketId; this.protocol = config.get('ipc.protocol'); switch (this.protocol) { case 'ipc': this.ipcFile = '/tmp/' + ipcBaseAddr; break; case 'inproc': this.ipcFile = appInstance.get() + '-' + ipcBaseAddr; break; default: var err = 'Unsupported IPC protocol: ' + this.protocol; console.error(err); throw err; } this.ipcAddr = this.protocol + '://' + this.ipcFile; this.logPrefix = 'IpcSocket' + ('' + this.socketId).padStart(3) + ': ' + this.name.padEnd(18) + ':'; DEBUG && this.log(' alloc', this.ipcAddr, socketType); this.socket.on('data', this.onData.bind(this)); this.connected = false; this.bound = false; }
constructor(id) { this.id = id; this.socket = nano.socket('pair'); this.socket.connect(channelUriPrefix + id); this._received = new Promise((resolve) => { this.socket.on('data', data => resolve(data)); }); }
const nano = require('nanomsg') const addr = 'tcp://127.0.0.1:7789' const req = nano.socket('req') const rep = nano.socket('rep') req.bind(addr) rep.connect(addr) rep.on('data', function (data) { console.log(String(data)) rep.send('the real RPC?') }) req.on('data', function (data) { console.log(String(data)) rep.close() req.close() }) req.send('is this')
const nano = require('nanomsg') const req = nano.socket('req') req.bind('tcp://127.0.0.1:7789') req.on('data', (buffer) => { console.log(String(buffer)); req.close(); }); setTimeout(() => req.send('is this'), 100);
const nano = require('nanomsg'); const pub = nano.socket('pub'); const addr = 'tcp://127.0.0.1:7789'; pub.bind(addr); let n = 1; let interval = setInterval(function () { if (n === 101) { clearInterval(interval); return; } pub.send(n++) }, 100)
const nano = require('nanomsg'); const sub = nano.socket('sub'); const addr = 'tcp://127.0.0.1:7789'; sub.connect(addr); sub.on('data', (buffer) => { console.log(Number(buffer)); });