@slsplus/serverless-http

    0.2.2 • Public • Published

    Serverless HTTP Proxy

    npm NPM downloads Status semantic-release

    Serverless HTTP Proxy.

    Installation

    $ npm i @slsplus/serverless-http --save

    Usage

    Start proxy by UDS(UNIX Domain Socket)

    import http from 'http';
    import express from 'express';
    import { ServerlessProxy } from '@slsplus/serverless-http';
    
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello Serverless Express');
    });
    
    const proxy = new ServerlessProxy({
      requestListener: app,
    });
    
    // export serverless handler function
    export.handler = async (event, context) => {
      await proxy.start()
      const res = await proxy.getResponse(event);
      return res;
    }

    Here is the example nodejs-runtime.

    Start proxy by child process

    Start proxy server by child proces, set useChildProcess to true, like below:

    import http from 'http';
    import express from 'express';
    import { ServerlessProxy } from '@slsplus/serverless-http';
    
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello Serverless Express');
    });
    
    const proxy = new ServerlessProxy({
      requestListener: app,
      useChildProcess: true,
    });
    
    // export serverless handler function
    export.handler = async (event, context) => {
      await proxy.start()
      const res = await proxy.getResponse(event);
      return res;
    }

    Using with Custom Runtime for Tencent Cloud SCF

    import { ServerlessProxy, TencentRuntime } from '@slsplus/serverless-http';
    import app from './app';
    
    async function start() {
      const proxy = new ServerlessProxy({
        requestListener: app,
      });
      const runtime = new TencentRuntime({
        proxy,
      });
    
      // start http server
      await proxy.start();
    
      // post ready -- finish initialization
      await runtime.ready();
      console.log(`Initialize success`);
    
      try {
        while (true) {
          await runtime.run();
        }
      } catch (e) {
        await runtime.error({
          statusCode: 501,
          body: `Code Error: ${e}`,
          headers: {},
          isBase64Encoded: false,
        });
      }
    }
    
    start();

    Here is the example custom-runtime.

    More information about Tencent Cloud Custom Runtime.

    License

    MIT License

    Copyright (c) 2020 Serverless Plus

    Install

    npm i @slsplus/serverless-http

    DownloadsWeekly Downloads

    3

    Version

    0.2.2

    License

    MIT

    Unpacked Size

    49.4 kB

    Total Files

    20

    Last publish

    Collaborators

    • yugasun
    • slsplus-bot