tcp-server.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const debug = require('debug')('log4js:tcp-server');
  2. const net = require('net');
  3. const clustering = require('../clustering');
  4. const LoggingEvent = require('../LoggingEvent');
  5. const DELIMITER = '__LOG4JS__';
  6. exports.configure = (config) => {
  7. debug('configure called with ', config);
  8. const server = net.createServer((socket) => {
  9. let dataSoFar = '';
  10. const send = (data) => {
  11. if (data) {
  12. dataSoFar += data;
  13. if (dataSoFar.indexOf(DELIMITER)) {
  14. const events = dataSoFar.split(DELIMITER);
  15. if (!dataSoFar.endsWith(DELIMITER)) {
  16. dataSoFar = events.pop();
  17. } else {
  18. dataSoFar = '';
  19. }
  20. events.filter(e => e.length).forEach((e) => {
  21. clustering.send(LoggingEvent.deserialise(e));
  22. });
  23. } else {
  24. dataSoFar = '';
  25. }
  26. }
  27. };
  28. socket.setEncoding('utf8');
  29. socket.on('data', send);
  30. socket.on('end', send);
  31. });
  32. server.listen(config.port || 5000, config.host || 'localhost', () => {
  33. debug(`listening on ${config.host || 'localhost'}:${config.port || 5000}`);
  34. server.unref();
  35. });
  36. return {
  37. shutdown: (cb) => {
  38. debug('shutdown called.');
  39. server.close(cb);
  40. }
  41. };
  42. };