server.js 850 Bytes
Newer Older
Rosanny Sihombing's avatar
Rosanny Sihombing committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'use strict';

const net = require('net');
const EventEmitter = require('events').EventEmitter;

const Connection = require('./connection');
const ConnectionConfig = require('./connection_config');

// TODO: inherit Server from net.Server
class Server extends EventEmitter {
  constructor() {
    super();
    this.connections = [];
    this._server = net.createServer(this._handleConnection.bind(this));
  }

  _handleConnection(socket) {
    const connectionConfig = new ConnectionConfig({
      stream: socket,
      isServer: true
    });
    const connection = new Connection({ config: connectionConfig });
    this.emit('connection', connection);
  }

  listen(port) {
    this._port = port;
    this._server.listen.apply(this._server, arguments);
    return this;
  }

  close(cb) {
    this._server.close(cb);
  }
}

module.exports = Server;