Merge tag 'v3.4.0' into hometown-dev
This commit is contained in:
@ -9,9 +9,9 @@ const redis = require('redis');
|
||||
const pg = require('pg');
|
||||
const log = require('npmlog');
|
||||
const url = require('url');
|
||||
const { WebSocketServer } = require('@clusterws/cws');
|
||||
const uuid = require('uuid');
|
||||
const fs = require('fs');
|
||||
const WebSocket = require('ws');
|
||||
|
||||
const env = process.env.NODE_ENV || 'development';
|
||||
const alwaysRequireAuth = process.env.LIMITED_FEDERATION_MODE === 'true' || process.env.WHITELIST_MODE === 'true' || process.env.AUTHORIZED_FETCH === 'true';
|
||||
@ -99,11 +99,11 @@ const startMaster = () => {
|
||||
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`);
|
||||
log.warn(`Starting streaming API server master with ${numWorkers} workers`);
|
||||
};
|
||||
|
||||
const startWorker = (workerId) => {
|
||||
log.info(`Starting worker ${workerId}`);
|
||||
log.warn(`Starting worker ${workerId}`);
|
||||
|
||||
const pgConfigs = {
|
||||
development: {
|
||||
@ -772,7 +772,7 @@ const startWorker = (workerId) => {
|
||||
});
|
||||
});
|
||||
|
||||
const wss = new WebSocketServer({ server, verifyClient: wsVerifyClient });
|
||||
const wss = new WebSocket.Server({ server, verifyClient: wsVerifyClient });
|
||||
|
||||
/**
|
||||
* @typedef StreamParams
|
||||
@ -1005,6 +1005,12 @@ const startWorker = (workerId) => {
|
||||
req.requestId = uuid.v4();
|
||||
req.remoteAddress = ws._socket.remoteAddress;
|
||||
|
||||
ws.isAlive = true;
|
||||
|
||||
ws.on('pong', () => {
|
||||
ws.isAlive = true;
|
||||
});
|
||||
|
||||
/**
|
||||
* @type {WebSocketSession}
|
||||
*/
|
||||
@ -1054,14 +1060,24 @@ const startWorker = (workerId) => {
|
||||
}
|
||||
});
|
||||
|
||||
wss.startAutoPing(30000);
|
||||
setInterval(() => {
|
||||
wss.clients.forEach(ws => {
|
||||
if (ws.isAlive === false) {
|
||||
ws.terminate();
|
||||
return;
|
||||
}
|
||||
|
||||
ws.isAlive = false;
|
||||
ws.ping('', false);
|
||||
});
|
||||
}, 30000);
|
||||
|
||||
attachServerWithConfig(server, address => {
|
||||
log.info(`Worker ${workerId} now listening on ${address}`);
|
||||
log.warn(`Worker ${workerId} now listening on ${address}`);
|
||||
});
|
||||
|
||||
const onExit = () => {
|
||||
log.info(`Worker ${workerId} exiting, bye bye`);
|
||||
log.warn(`Worker ${workerId} exiting`);
|
||||
server.close();
|
||||
process.exit(0);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user