@skazka/server-http

0.2.0 • Public • Published

HTTP(S) Server

It helps to run Skazka app as node.js server.

NPM

How to install

npm i @skazka/server @skazka/server-http

With yarn:

yarn add @skazka/server @skazka/server-http

Optionally you can add error handler, logger, router, request and response:

npm i @skazka/server-router @skazka/server-error @skazka/server-logger @skazka/server-request @skazka/server-response

With yarn:

yarn add @skazka/server-router @skazka/server-error @skazka/server-logger @skazka/server-request @skazka/server-response

How to use

const App = require('@skazka/server');
const Router = require('@skazka/server-router');
        
const error = require('@skazka/server-error');
const logger = require('@skazka/server-logger');

const request = require('@skazka/server-request');
const response = require('@skazka/server-response');
        
const server = require('@skazka/server-http');
        
const app = new App();
const router = new Router();
        
app.all([
  error(),
  logger(),
  request(),
  response(),
]);
    
app.then(async (ctx) => {
  // it works for each request
});
    
router.get('/data').then(async (ctx) => {
  // it works only for "/url"
  return ctx.response('data'); 
});
        
app.then(router.resolve());
        
server.createHttpServer(app);

Run with ssl/tls

const { readFileSync } = require('fs');
const { resolve } = require('path');

const options = {
  key: readFileSync(resolve(__dirname, 'ssl', 'key.pem')),
  cert: readFileSync(resolve(__dirname, 'ssl', 'cert.pem'))
};
        
server.createHttpsServer(options, app);

With pem

Pem package helps to generate pem files for you. It could be useful for testing.

npm i pem

With yarn:

yarn add pem
const days = 1;
const selfSigned = true;
    
pem.createCertificate({ days, selfSigned }, (err, { serviceKey: key, certificate: cert }) => {
  if (err) {
    throw err;
  }
  server.createHttpsServer({ key, cert }, app);
});

And async/await:

const util = require('util');

const createCertificate = util.promisify(pem.createCertificate);

(async () => {
  const days = 1;
  const selfSigned = true;
  
  const { 
    serviceKey: key, 
    certificate: cert,
  } = await createCertificate({ days, selfSigned });
  
  server.createHttpsServer({ key, cert }, app);
})();

Port

By default server uses port from process.env.PORT:

PORT=3000 node index.js

But you can set port in the code:

server.createHttpServer(app, 80);
server.createHttpsServer({ key, cert }, app, 443);

Package Sidebar

Install

npm i @skazka/server-http

Weekly Downloads

0

Version

0.2.0

License

MIT

Unpacked Size

4.37 kB

Total Files

3

Last publish

Collaborators

  • evheniy.bystrov
  • skazkajs