29 lines
848 B
JavaScript
29 lines
848 B
JavaScript
// The Websocket server is wholly responsible for ingesting messages from
|
|
// Headplane agent instances (hopefully not more than 1 is running lol)
|
|
import { WebSocketServer } from 'ws'
|
|
import { log } from './utils.mjs'
|
|
|
|
const wss = new WebSocketServer({ noServer: true })
|
|
wss.on('connection', (ws, req) => {
|
|
// On connection the agent will send its NodeID via Headers
|
|
// We store this for later use to validate and show on the UI
|
|
const nodeID = req.headers['x-headplane-ts-node-id']
|
|
if (!nodeID) {
|
|
ws.close(1008, 'ERR_NO_HP_TS_NODE_ID')
|
|
return
|
|
}
|
|
})
|
|
|
|
export async function registerWss(server) {
|
|
log('SRVX', 'INFO', 'Registering Websocket Server')
|
|
server.on('upgrade', (request, socket, head) => {
|
|
wss.handleUpgrade(request, socket, head, ws => {
|
|
wss.emit('connection', ws, request)
|
|
})
|
|
})
|
|
}
|
|
|
|
export function getWss() {
|
|
return wss
|
|
}
|