UNPKG

1.41 kBJavaScriptView Raw
1'use strict';
2/**
3 * Requires
4 */
5var net = require('net'),
6 tls = require('tls'),
7 util = require('util'),
8 Connection = require('mqtt-connection'),
9 MqttServer, MqttSecureServer;
10
11function setupConnection (duplex) {
12 /*jshint validthis: true*/
13 var connection = new Connection(duplex);
14 this.emit('client', connection);
15 /*jshint validthis: false*/
16}
17
18/*
19 * MqttServer
20 *
21 * @param {Function} listener - fired on client connection
22 */
23MqttServer = module.exports.MqttServer = function Server (listener) {
24 if (!(this instanceof Server)) {
25 return new Server(listener);
26 }
27
28 net.Server.call(this);
29
30 this.on('connection', setupConnection);
31
32 if (listener) {
33 this.on('client', listener);
34 }
35
36 return this;
37};
38util.inherits(MqttServer, net.Server);
39
40/**
41 * MqttSecureServer
42 *
43 * @param {Object} opts - server options
44 * @param {Function} listener
45 */
46MqttSecureServer = module.exports.MqttSecureServer =
47 function SecureServer (opts, listener) {
48 if (!(this instanceof SecureServer)) {
49 return new SecureServer(opts, listener);
50 }
51
52 // new MqttSecureServer(function(){})
53 if ('function' === typeof opts) {
54 listener = opts;
55 opts = {};
56 }
57
58 tls.Server.call(this, opts);
59
60 if (listener) {
61 this.on('client', listener);
62 }
63
64 this.on('secureConnection', setupConnection);
65
66 return this;
67 };
68util.inherits(MqttSecureServer, tls.Server);