'use strict'; const net = require('net'), tls = require('tls'), fs = require('fs'), dgram = require('dgram'), eventParser = require('./eventParser.js'), Pubsub = require('event-pubsub'), Message = require('js-message'); function emit(socket, type, data){ this.log('dispatching event to socket'.debug, ' : ', type.data, data); let message=new Message; message.type=type; message.data=data; if(this.config.rawBuffer){ message=new Buffer(type,this.encoding); }else{ message=eventParser.format(message); } if(this.udp4 || this.udp6){ if(!socket.address || !socket.port){ this.log('Attempting to emit to a single UDP socket without supplying socket address or port. Redispatching event as broadcast to all connected sockets'); this.broadcast(type,data); return; } this.server.write( message, socket ); return; } socket.write(message); } function broadcast(type,data){ this.log('broadcasting event to all known sockets listening to '.debug, this.path.variable,' : ', ((this.port)?this.port:''), type, data); let message=new Message; message.type=type; message.data=data; if(this.config.rawBuffer){ message=new Buffer(type,this.encoding); }else{ message=eventParser.format(message); } if(this.udp4 || this.udp6){ for(let i=1, count=this.sockets.length; i0){ let message=new Message; message.load(data.shift()); server.log('received event of : '.debug,message.type.data,message.data); if(message.data.id){ sock.id=message.data.id; } server.trigger( message.type, message.data, sock ); } } ); socket.on( 'message', function(msg,rinfo) { if (!rinfo){ return; } server.log('Received UDP message from '.debug, rinfo.address.variable, rinfo.port); let data; if(server.config.rawSocket){ data=new Buffer(msg,this.encoding); }else{ data=msg.toString(); } socket.emit('data',data,rinfo); } ); server.trigger( 'connect', socket ); if(server.config.rawBuffer){ return; } } function started(socket){ server.onStart(socket); } if(!port){ server.log('starting server as'.debug, 'Unix || Windows Socket'.variable); if (process.platform ==='win32'){ server.path = server.path.replace(/^\//, ''); server.path = server.path.replace(/\//g, '-'); server.path= `\\\\.\\pipe\\${server.path}`; } server.server.listen( server.path, started ); return; } if(!server.udp4 && !server.udp6){ server.log('starting server as'.debug, (server.config.tls?'TLS':'TCP').variable); server.server.listen( server.port, server.path, started ); return; } server.log('starting server as'.debug,((server.udp4)? 'udp4':'udp6').variable); server.server.bind( server.port, server.path ); started( { address : server.path, port : server.port } ); } ); } }; new Pubsub(server); server.on( 'close', function(){ for(let i=0, count=server.sockets.length; i