diff --git a/streaming/index.js b/streaming/index.js index d7bfa65422f..b5f6dbd87ff 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -9,6 +9,7 @@ const log = require('npmlog'); const url = require('url'); const WebSocket = require('uws'); const uuid = require('uuid'); +const fs = require('fs'); const env = process.env.NODE_ENV || 'development'; @@ -70,6 +71,9 @@ const redisUrlToClient = (defaultConfig, redisUrl) => { const numWorkers = +process.env.STREAMING_CLUSTER_NUM || (env === 'development' ? 1 : Math.max(os.cpus().length - 1, 1)); const startMaster = () => { + if (!process.env.SOCKET && process.env.PORT && isNaN(+process.env.PORT)) { + log.warn('UNIX domain socket is now supported by using SOCKET. Please migrate from PORT hack.'); + } log.info(`Starting streaming API server master with ${numWorkers} workers`); }; @@ -574,9 +578,16 @@ const startWorker = (workerId) => { }); }, 30000); - server.listen(process.env.PORT || 4000, process.env.BIND || '0.0.0.0', () => { - log.info(`Worker ${workerId} now listening on ${server.address().address}:${server.address().port}`); - }); + if (process.env.SOCKET || process.env.PORT && isNaN(+process.env.PORT)) { + server.listen(process.env.SOCKET || process.env.PORT, () => { + fs.chmodSync(server.address(), 0o666); + log.info(`Worker ${workerId} now listening on ${server.address()}`); + }); + } else { + server.listen(+process.env.PORT || 4000, process.env.BIND || '0.0.0.0', () => { + log.info(`Worker ${workerId} now listening on ${server.address().address}:${server.address().port}`); + }); + } const onExit = () => { log.info(`Worker ${workerId} exiting, bye bye`);