From e1b7283a94d1f38dae3479c205224a896098f017 Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Mon, 18 Nov 2019 22:39:37 -0300 Subject: [PATCH] Remove handling of SIGTERM New version of socket.io cannot terminate cleanly when there are active connections: https://github.com/socketio/socket.io/issues/1602 --- src/index.ts | 17 ++++------------- src/server/app.ts | 2 +- src/server/server.test.ts | 5 +++-- src/server/server.ts | 8 +++++--- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/index.ts b/src/index.ts index fc00c07..61359d3 100755 --- a/src/index.ts +++ b/src/index.ts @@ -3,21 +3,12 @@ if (!process.env.DEBUG) { process.env.DEBUG = 'peercalls' } -import app from './server/app' import _debug from 'debug' +import forEach from 'lodash/forEach' +import { io } from './server/app' +import app from './server/app' const debug = _debug('peercalls') const port = process.env.PORT || 3000 -const server = app.listen(port, () => debug('Listening on: %s', port)) - -function close () { - debug('Closing server...') - server.close(() => { - debug('Bye!') - process.exit() - }) -} - -process.on('SIGINT', close) -process.on('SIGTERM', close) +app.listen(port, () => debug('Listening on: %s', port)) diff --git a/src/server/app.ts b/src/server/app.ts index 1761dd2..ee29967 100644 --- a/src/server/app.ts +++ b/src/server/app.ts @@ -17,7 +17,7 @@ debug(`WebSocket URL: ${SOCKET_URL}`) const app = express() const server = createServer(config, app) -const io = SocketIO(server, { path: SOCKET_URL }) +export const io = SocketIO(server, { path: SOCKET_URL }) app.set('x-powered-by', false) app.locals.version = require('../../package.json').version diff --git a/src/server/server.test.ts b/src/server/server.test.ts index ea02343..a741153 100644 --- a/src/server/server.test.ts +++ b/src/server/server.test.ts @@ -1,11 +1,12 @@ import express from 'express' -import http from 'http' +import http, { RequestListener } from 'http' import https from 'https' import { createServer } from './server' describe('server', () => { - let app: Express.Application, config: any + let app: RequestListener + let config: any beforeEach(() => { config = {} app = express() diff --git a/src/server/server.ts b/src/server/server.ts index e93b08c..b7eb22c 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -1,16 +1,18 @@ import { readFileSync } from 'fs' import { resolve, join } from 'path' import { Config } from './config' +import { createServer as createHTTPSServer } from 'https' +import { createServer as createHTTPServer, RequestListener } from 'http' const projectRoot = resolve(join(__dirname, '../..')) const readFile = (file: string) => readFileSync(resolve(projectRoot, file)) -export function createServer (config: Config, app: Express.Application) { +export function createServer (config: Config, app: RequestListener) { if (config.ssl) { const key = readFile(config.ssl.key) const cert = readFile(config.ssl.cert) - return require('https').createServer({ key, cert }, app) + return createHTTPSServer({ key, cert }, app) } - return require('http').createServer(app) + return createHTTPServer(app) }