/** * Send concatenated data to StatsD server via UDP * * @param {Buffer} buf */ send(buf) { //this.logger.info("Buffer\n" + buf.toString()); const sock = dgram.createSocket("udp4"); sock.send(buf, 0, buf.length, this.opts.port, this.opts.host, (err, bytes) => { if (err) { this.logger.warn("Unable to send metrics to StatsD server. Error:" + err.message, err); } else { this.logger.debug("Metrics are uploaded to StatsD. Sent bytes:", bytes); } sock.close(); }); }
describe("Test send method", () => { const broker = new ServiceBroker({ logger: false, metrics: true }); const registry = broker.metrics; const reporter = new StatsDReporter({ maxPayloadSize: 0 }); reporter.init(registry); it("should send data via udp4", () => { dgram.createSocket.mockClear(); sockSend.mockClear(); sockClose.mockClear(); const buf = Buffer.from("Moleculer Metrics Data"); reporter.send(buf); expect(dgram.createSocket).toBeCalledTimes(1); expect(dgram.createSocket).toBeCalledWith("udp4"); expect(sockSend).toBeCalledTimes(1); expect(sockSend).toBeCalledWith(buf, 0, 22, 8125, "localhost", expect.any(Function)); expect(sockClose).toBeCalledTimes(1); }); });
it("should bind UDP with broadcast", () => { udp = new UdpServer(transporter, { udpReuseAddr: true }); udp.getBroadcastAddresses = jest.fn(() => (["192.168.100.255", "192.168.200.255"])); return udp.startServer("127.0.0.1", 4567).catch(protectReject).then(() => { expect(udp.servers.length).toBe(1); const server = udp.servers[0]; expect(dgram.createSocket).toHaveBeenCalledTimes(1); expect(dgram.createSocket).toHaveBeenCalledWith({ "reuseAddr": true, "type": "udp4" }); expect(server.bind).toHaveBeenCalledTimes(1); expect(server.bind).toHaveBeenCalledWith({ "exclusive": true, "host": "127.0.0.1", "port": 4567 }, jasmine.any(Function)); expect(server.on).toHaveBeenCalledTimes(2); expect(server.on).toHaveBeenCalledWith("error", jasmine.any(Function)); expect(server.on).toHaveBeenCalledWith("message", jasmine.any(Function)); expect(server.setBroadcast).toHaveBeenCalledTimes(1); expect(server.setBroadcast).toHaveBeenCalledWith(true); expect(server.destinations).toEqual(["192.168.100.255", "192.168.200.255"]); expect(udp.getBroadcastAddresses).toHaveBeenCalledTimes(1); }); });
it("should bind UDP with multicast", () => { dgram.createSocket.mockClear(); const server = udp.servers[0]; expect(dgram.createSocket).toHaveBeenCalledTimes(1); expect(dgram.createSocket).toHaveBeenCalledWith({ "reuseAddr": true, "type": "udp4" });
return new this.Promise(resolve => { try { const server = dgram.createSocket({ type: "udp4", reuseAddr: this.opts.udpReuseAddr });
start(cb: () => void) { let self = this; this.tcpServer = net.createServer(); this.socket = dgram.createSocket(this.type, function (msg, peer) { let key = genKey(peer); if (!self.clients[key]) {
const listener = dgram.createSocket({type: 'udp4', reuseAddr: true}); listener.bind(6666); const listenerEncrypted = dgram.createSocket({type: 'udp4', reuseAddr: true}); listenerEncrypted.bind(6667);
_setProtocol(port) { if (!protocolToPortMap[this.protocol]) { throw new Error(`Invalid protocol defined. Valid options are : ${JSON.stringify(Object.keys(protocolToPortMap))}`); } this.port = port || protocolToPortMap[this.protocol]; if (this.protocol === 'udp') { this.udpClient = dgram.createSocket('udp4'); } }
constructor(options) { super(); this.address = options.address || '0.0.0.0'; this.port = options.port || 6881; this.dhtAnnouncingBootstrap = options.dhtAnnouncingBootstrap || 1000; this.dhtAnnouncingTable = options.dhtAnnouncingTable || 1000; this.BOOTSTRAP_NODES = options.BOOTSTRAP_NODES; this.verticalAttackMode = options.verticalAttackMode || false; this.verticalAttackNrNodes = options.verticalAttackNrNodes || 8; this.BEP51Mode = options.BEP51Mode || false; this.socket = dgram.createSocket('udp4'); this.routingTable = new RoutingTable(options.tableMaxSize || 128); }
addUdpSubscriber(resp){ if(Object.keys(this._udpSubClients).length === 0){ this.udpSocket = Udp.createSocket('udp4'); } this._udpSubClients[resp[3]] = { port: resp[2], host: resp[1], dgramSize: resp[4], connId: resp[3] } }
// Start an UDP server to mock calls. const startUdpServer = async function() { const requests = [] const server = createSocket('udp4', buffer => { requests.push(buffer.toString()) }) await promisify(server.bind.bind(server))(0) const { address, port } = server.address() const stopServer = promisify(server.close.bind(server)) return { host: address, port, requests, stopServer } }
var UdpClient = function (host, port) { SocketClient.apply(this, arguments); this.host = host; this.port = port; this.client = dgram.createSocket('udp4'); logger.info('use udp server ' + host + ':' + port); }
listen(localServerPort, listenAnyway = false, callback) { if (listenAnyway || !this.localServerPort) { this.localServerPort = localServerPort this.sockets.server = dgram.createSocket('udp4') this.sockets.server.on('error', () => { storage.trigger('fatalError', 'Server socket error') }) this.sockets.server.on('message', (...data) => { this.serverProcessMessage(...data) }) this.sockets.server.bind(localServerPort, callback) } }
function createUDPClient(udpType) { udpType = udpType || 'udp4'; const server = dgram.createSocket(udpType); const MSG = 'Hello'; let msgTimer; server.on('message', (msg, info) => { console.log(`RECEIVE msg: ${msg}`); }); msgTimer = setInterval(() => { server.send(MSG, 0, MSG.length, DST_PORT, DST_ADDR); }, 1000); return server; }
Dgram.createSocket({ type: 'udp4', reuseAddr: true }, (msg, rinfo) => { this._incoming(msg); })