tcp-proxy.js
simple tcp proxy
Last updated 2 years ago by wanghx .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ npm install tcp-proxy.js 
SYNC missed versions from official npm registry.

tcp-proxy.js

A TCP Proxy package for NodeJS

NPM version Build Status Appveyor status Coverage Status

Usage

$ npm i tcp-proxy.js --save

Create a new proxy instance

const TCPProxy = require('tcp-proxy.js');
const proxy = new TCPProxy({ port: 9229 });
proxy.createProxy({
  forwardPort: 9999,
  forwardHost: 'localhost',
});

Create a new proxy instance for a specific IP/Hostname

This will only listen to connections on the specified IP/Hostname, you can have duplicates of ports this way.

const TCPProxy = require('tcp-proxy.js');
const proxy = new TCPProxy({ host: 'localhost', port: 9229 });
proxy.createProxy({
  forwardPort: 9999,
  forwardHost: 'localhost',
});

Create a new proxy instance with dynamic host:ip

const TCPProxy = require('tcp-proxy.js');
const proxy = new TCPProxy({ host: 'localhost', port: 9229 });
proxy.createProxy({
  getForwardInfo: () => ({
    host: '127.0.0.1',
    port: data.port,
  }),
});

End proxy

proxy.end();

Interceptor

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    client(chunk) {
      // request => proxy server => interceptor.client => forward server
      const data = chunk.toString();
      const newData = data.replace('GET / ', 'GET /tom ');
      return Buffer.from(newData);
    },
    server(chunk) {
      // forward server => interceptor.server => proxy server => response
      const data = chunk.toString();
      const newData = data.replace('hello tom', 'bello tom');
      return Buffer.from(newData);
    },
  },
});

Async Interceptor

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    client(chunk) {
      // request => proxy server => interceptor.client => forward server
      const data = chunk.toString();
      return new Promise(resolve => {
        setTimeout(() => {
          const newData = data.replace('GET / ', 'GET /tom ');
          resolve(Buffer.from(newData));
        }, 200);
      });
    },
  },
});

Connection Information

IP, Port of Client, Server and Self

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    client(result, encoding, connection) {
      console.info('Connection from ', connection.client.ip, ':', connection.client.port, 'to', connection.self.ip, ':', connection.self.port, 'from', connection.server.ip, ':', connection.server.port);
      return result
    }
  },
});

Data size

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    server(result, encoding, connection) {
      console.log('Connection Size:' + connection.size);
      return result
    }
  },
});

License

MIT

Current Tags

  • 1.5.0                                ...           latest (2 years ago)

12 Versions

  • 1.5.0                                ...           2 years ago
  • 1.4.0                                ...           2 years ago
  • 1.3.0                                ...           5 years ago
  • 1.2.0                                ...           6 years ago
  • 1.1.1                                ...           7 years ago
  • 1.1.0                                ...           7 years ago
  • 1.0.5                                ...           7 years ago
  • 1.0.4                                ...           7 years ago
  • 1.0.3                                ...           7 years ago
  • 1.0.2                                ...           7 years ago
  • 1.0.1                                ...           7 years ago
  • 1.0.0                                ...           7 years ago
Maintainers (1)
Downloads
Total 0
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (2)
Dev Dependencies (8)
Dependents (1)

© 2010 - cnpmjs.org x YWFE | Home | YWFE