server.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. 'use strict'
  2. var net = require('net')
  3. var tls = require('tls')
  4. var inherits = require('inherits')
  5. var Connection = require('mqtt-connection')
  6. var MqttServer
  7. var MqttSecureServer
  8. function setupConnection (duplex) {
  9. var connection = new Connection(duplex)
  10. this.emit('client', connection)
  11. }
  12. /*
  13. * MqttServer
  14. *
  15. * @param {Function} listener - fired on client connection
  16. */
  17. MqttServer = module.exports = function Server (listener) {
  18. if (!(this instanceof Server)) {
  19. return new Server(listener)
  20. }
  21. net.Server.call(this)
  22. this.on('connection', setupConnection)
  23. if (listener) {
  24. this.on('client', listener)
  25. }
  26. return this
  27. }
  28. inherits(MqttServer, net.Server)
  29. /**
  30. * MqttSecureServer
  31. *
  32. * @param {Object} opts - server options
  33. * @param {Function} listener
  34. */
  35. MqttSecureServer = module.exports.SecureServer =
  36. function SecureServer (opts, listener) {
  37. if (!(this instanceof SecureServer)) {
  38. return new SecureServer(opts, listener)
  39. }
  40. // new MqttSecureServer(function(){})
  41. if (typeof opts === 'function') {
  42. listener = opts
  43. opts = {}
  44. }
  45. tls.Server.call(this, opts)
  46. if (listener) {
  47. this.on('client', listener)
  48. }
  49. this.on('secureConnection', setupConnection)
  50. return this
  51. }
  52. inherits(MqttSecureServer, tls.Server)