ws.mjs 1.1 KB

1234567891011121314151617181920212223242526272829
  1. import chalk from 'chalk'
  2. import os from 'node:os'
  3. export default function () {
  4. WIKI.servers.ws.on('connection', (socket) => {
  5. // TODO: Validate token + permissions
  6. const token = socket.handshake.auth.token
  7. // console.info(token)
  8. const listeners = {}
  9. socket.on('server:logs', () => {
  10. socket.emit('server:log', chalk.greenBright(`Streaming logs from ${chalk.bold('Wiki.js')} instance ${chalk.yellowBright.bold(WIKI.INSTANCE_ID)} on host ${chalk.yellowBright.bold(os.hostname())}...`))
  11. listeners.serverLogs = (msg) => {
  12. socket.emit('server:log', msg)
  13. }
  14. WIKI.logger.ws.addListener('log', listeners.serverLogs)
  15. WIKI.logger.warn(`User XYZ is streaming server logs. ( Listeners: ${WIKI.logger.ws.listenerCount('log')} )`)
  16. })
  17. socket.on('disconnect', () => {
  18. if (listeners.serverLogs) {
  19. WIKI.logger.ws.removeListener('log', listeners.serverLogs)
  20. delete listeners.serverLogs
  21. }
  22. WIKI.logger.warn(`User XYZ has stopped streaming server logs. ( Listeners: ${WIKI.logger.ws.listenerCount('log')} )`)
  23. })
  24. })
  25. }