@mikosoft/spa-server

1.2.0 • Public • Published

@mikosoft/spa-server

  • HTTP server for single page applications (angular, vue, react, dodo).
  • Proxy server to boost website SEO.

Installation

$ npm install --save @mikosoft/spa-server

Features

  • no dependencies
  • very fast
  • simple to use
  • define custom HTTP response headers (solve CORS)
  • compress HTTP response (gzip or deflate)

HTTP Server

Serve single page application on the HTTP server.

import { HTTPServer } from '@mikosoft/spa-server';

const httpOpts = {
  staticDir: '/dist/angular-project',
  indexFile: 'index.html',
  port: process.env.PORT || 9000,
  timeout: 5 * 60 * 1000, // if 0 never timeout
  acceptEncoding: 'gzip', // gzip, deflate or ''
  headers: {
    // CORS Headers
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization',
    'Access-Control-Allow-Methods': 'GET', // 'Access-Control-Allow-Methods': 'GET, POST, PUT, PATCH, DELETE, HEAD',
    'Access-Control-Max-Age': '3600'
  },
  debug: false
};
const httpServer = new HTTPServer(httpOpts);
httpServer.start();

HTTP Server methods

  • start() - start the HTTP server
  • stop() - stop the HTTP server
  • restart() - restart the HTTP server

Proxy Server

Serve single page application via proxy server and boost the SEO. Proxy Server is placed between client (browser) and HTTPServer.

import puppeteer from 'puppeteer';
import { ProxyServer } from '@mikosoft/spa-server';

const main = async () => {
  const proxyOpts = {
    port: process.env.PORT || 9001,
    request_host: 'localhost',
    request_port: 9000,
    regexpUA: /Mozilla/,
    debug: true
  };
  const browserOpts = {
    headless: false,
    width: 1300,
    height: 900,
    position: '700,20'
  };

  const proxyServer = new ProxyServer(proxyOpts, browserOpts);

  await proxyServer.injectPuppeteer(puppeteer); // defines this.puppeteer
  await proxyServer.openBrowser();
  proxyServer.start();
};

main();

Proxy Server methods

  • injectPuppeteer() - inject puppeteer npm library
  • openBrowser() - open browser via the puppeteer
  • closeBrowser() - close browser
  • start() - start the Proxy server
  • stop() - stop the Proxy server
  • restart() - restart the Proxy server

Licence

Copyright (C) 2023-present MikoSoft licensed under MIT .

Package Sidebar

Install

npm i @mikosoft/spa-server

Weekly Downloads

2

Version

1.2.0

License

MIT

Unpacked Size

22.6 kB

Total Files

8

Last publish

Collaborators

  • smikodanic