tlssocket.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. var EventEmitter = require('events').EventEmitter;
  2. var util = require('util');
  3. var https = require('https');
  4. var tls = require('tls');
  5. var utils = require('../../util/utils');
  6. var TcpSocket = require('./tcpsocket');
  7. var WebSocketServer = require('ws').Server;
  8. var logger = require('pomelo-logger').getLogger('pomelo', __filename);
  9. var HEAD_SIZE = 4;
  10. var TLS = function(port, opts) {
  11. EventEmitter.call(this);
  12. var self = this;
  13. var ssl = opts.ssl;
  14. switch(ssl.type) {
  15. case 'wss':
  16. var httsServer = https.createServer(ssl).listen(port);
  17. var wss = new WebSocketServer({server: httsServer});
  18. wss.on('connection', this.emit.bind(this, 'connection'));
  19. break;
  20. case 'tls':
  21. var tlsServer = tls.createServer(ssl, function(socket) {
  22. var tcpsocket = new TcpSocket(socket, {headSize: HEAD_SIZE,
  23. headHandler: utils.headHandler,
  24. closeMethod: opts.closeMethod});
  25. self.emit('connection', tcpsocket);
  26. }).listen(port);
  27. break;
  28. default:
  29. logger.error('undefined ssl type: %s', ssl.type);
  30. break;
  31. }
  32. };
  33. util.inherits(TLS, EventEmitter);
  34. module.exports = TLS;