12345678910111213141516171819202122232425262728293031323334353637 |
- var EventEmitter = require('events').EventEmitter;
- var util = require('util');
- var https = require('https');
- var tls = require('tls');
- var utils = require('../../util/utils');
- var TcpSocket = require('./tcpsocket');
- var WebSocketServer = require('ws').Server;
- var logger = require('pomelo-logger').getLogger('pomelo', __filename);
- var HEAD_SIZE = 4;
- var TLS = function(port, opts) {
- EventEmitter.call(this);
- var self = this;
- var ssl = opts.ssl;
- switch(ssl.type) {
- case 'wss':
- var httsServer = https.createServer(ssl).listen(port);
- var wss = new WebSocketServer({server: httsServer});
- wss.on('connection', this.emit.bind(this, 'connection'));
- break;
- case 'tls':
- var tlsServer = tls.createServer(ssl, function(socket) {
- var tcpsocket = new TcpSocket(socket, {headSize: HEAD_SIZE,
- headHandler: utils.headHandler,
- closeMethod: opts.closeMethod});
- self.emit('connection', tcpsocket);
- }).listen(port);
- break;
- default:
- logger.error('undefined ssl type: %s', ssl.type);
- break;
- }
- };
- util.inherits(TLS, EventEmitter);
- module.exports = TLS;
|