magic-reverse-proxy
TypeScript icon, indicating that this package has built-in type declarations

2.3.30 • Public • Published

Magic Reverse Proxy

Getting started into Magic Reverse Proxy!

Magic Reverse Proxy is a proxy that can be used to forward requests to another server by domain name, and have a load balancer, ssl/tls support features.

Installation

You must run the following terminal command in same path of your project.

npm install magic-reverse-proxy --save

How it works?

In this basic sample our main goal is to forward all websocket traffic from port 8080 to port 1234.

Creating a basic WebSocket server:

import http from 'http';
import WebSockets from 'websocket';
import { createProxy } from 'magic-reverse-proxy';

const server = http.createServer((req, res) => {
  //Reject useless requests...
  res.writeHead(403).end();
});

server.listen(1234, function () {
  console.log('Destination server is running on port 1234!');
});

const WebSockServer = new WebSockets.server({
  httpServer: server,
  maxReceivedFrameSize: 65536,
  maxReceivedMessageSize: 65536
});

WebSockServer.on('request', (request) => {
  console.log('WebSocket connected over [Client -> localhost:8080 -> localhost:1234]');
  let sock = request.accept();
  sock.on('message', (msg) => {
    //Print in the console the data recepted from client.
    console.log(msg.utf8Data);
  })
});

Creating the Magic Proxy trigger and binding to specific port:

let proxy = createProxy({
  allow_unknown_host: false, //Drop connections from unknown hosts
  allow_websockets: true, //Allow websocket to be proxied as well
  http: {
    port: 8080, //Define HTTP proxy to port 80
    enabled: true, //Enable HTTP proxy
    start_callback: () => {
      console.log('Magic proxy server is running on port 8080!');
    },
    middlewares: [] //Stack of middlewares to be loaded into HTTP server
  },
  proxies: [
    {
      domain: '*', //Proxy all websocket traffic to ws://localhost:1234
      timeout: 10000, //Timeout for connection
      round: 0, //Round-Robin index of destinations to proxy all requests
      destination: ['http://localhost:1234/'], //Array with destinations (Round-Robin will be used to load balance)
      sockDestination: ['ws://localhost:1234'] //Array with websocket destinations (Round-Robin will be used to load balance)
    }
  ],
  default_proxy: {
    timeout: 10000, //Timeout for connection
    round: 0, //Round-Robin index of destinations to proxy all requests
    destination: ['http://localhost:1234/'] //Array with destinations (Round-Robin will be used to load balance)
  }
});

//Bind proxy with specified configurations
proxy.bind();

Package Sidebar

Install

npm i magic-reverse-proxy

Weekly Downloads

18

Version

2.3.30

License

MIT

Unpacked Size

43.3 kB

Total Files

25

Last publish

Collaborators

  • muryllo.pimenta