@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
48 lines (44 loc) • 1.11 kB
text/typescript
import { EOL } from 'os';
import { SocketWithInfo, MessageWithInfo } from './types';
import { AnySocketEpic } from '../kit';
import { registerError } from '../registerError';
import { Logger } from '../logging';
import { localNow } from '../time';
export const logConnected = (
logger: Logger,
socket: SocketWithInfo,
message: MessageWithInfo,
epic: AnySocketEpic
) => {
const forwardedFor = message.headers['x-forwarded-for'];
const remoteAddress = message.connection.remoteAddress;
let info = {};
if (epic.logOnConnection) {
try {
info = epic.logOnConnection(socket, message);
} catch (e) {
registerError(e);
logger.error(
'💥 Couldnt get information for logging (your custom SocketEpic.logInfo has thrown!)',
e
);
}
}
logger.log(
`${EOL}✊ Client connected`,
{
id: message.id,
url: message.url,
epic: epic.name,
timestamp: localNow(),
...(forwardedFor && {
forwardedFor,
}),
...(remoteAddress && {
remoteAddress,
}),
...info,
},
EOL
);
};