@slsplus/serverless-http

Serverless HTTP Proxy

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@slsplus/serverless-http
410.2.23 years ago3 years agoMinified + gzip package size for @slsplus/serverless-http in KB

Readme

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