export function startSocketEngine()

in modules/socket-engine/src/main.ts [38:71]


export function startSocketEngine(
  moduleOrFactory: Type<{}>,
  providers: StaticProvider[] = [],
  host = 'localhost',
  port = 9090,
): Promise<SocketEngineServer> {
  return new Promise((resolve, _reject) => {
    const engine = new CommonEngine(moduleOrFactory, providers);

    const server = net.createServer((socket) => {
      // eslint-disable-next-line @typescript-eslint/no-misused-promises
      socket.on('data', async (buff) => {
        const message = buff.toString();
        const renderOptions = JSON.parse(message) as SocketEngineRenderOptions;
        try {
          const html = await engine.render(renderOptions);
          socket.write(JSON.stringify({ html, id: renderOptions.id } as SocketEngineResponse));
        } catch (error) {
          // send the error down to the client then rethrow it
          socket.write(
            JSON.stringify({
              html: null,
              id: renderOptions.id,
              error: error.toString(),
            } as SocketEngineResponse),
          );
        }
      });
    });

    server.listen(port, host);
    resolve({ close: () => server.close() });
  });
}