@underpostnet/underpost
Version:
Underpost Platform — end-to-end CI/CD and application-delivery toolchain CLI. Covers bare metal, Kubernetes, K3s, kubeadm, LXD, container/image orchestration, secrets, databases, cron jobs, monitoring, SSH, runners, PWA + Workbox delivery, and release orc
40 lines (32 loc) • 1.42 kB
JavaScript
/**
* Default WebSocket server factory — initializes the main channel and creates the Socket.IO server.
* @module ws/default/default.ws.server
*/
;
import { IoServer } from '../IoServer.js';
import { DefaultWsConnectionHandler } from './default.ws.connection.js';
import { DefaultWsMainChannel } from './channels/default.ws.main.js';
import { resolveHostKeyContext } from '../../server/conf.js';
/**
* @class DefaultWsServer
* @classdesc Creates the default WebSocket server with a single main channel.
*/
class DefaultWsServer {
/**
* Initializes the main channel and creates the Socket.IO server.
* @param {import('http').Server} httpServer
* @param {Object} options
* @param {string} options.host
* @param {string} options.path
* @returns {{ options: import('socket.io').ServerOptions, ioServer: import('socket.io').Server, meta: ImportMeta }}
*/
static create(httpServer, options) {
const { host, path } = options;
const hostKeyContext = resolveHostKeyContext({ host, path });
DefaultWsMainChannel.init(hostKeyContext);
return IoServer.create(httpServer, options, (socket) => DefaultWsConnectionHandler.handle(socket, hostKeyContext));
}
}
/** Required by Express.js dynamic import: `const { createIoServer } = await import(...)` */
const createIoServer = DefaultWsServer.create.bind(DefaultWsServer);
export { DefaultWsServer, createIoServer };