3.2.7 • Published 2 years ago

atomics-http v3.2.7

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

atomics-http

atomics-http is a Node.js extension that provides synchronous http or https calls. Minimal dependency and very fast. Worker and Atomics based.

Changes

  • 2022-04-07 Typescript optimized
  • 2022-04-07 Transfer data bug fixed
  • 2022-04-07 File upload support added
  • 2022-04-07 Example available on github
  • 2022-03-15 readTimeout property added
  • 2022-03-14 Added write function for POST requests
  • 2022-03-11 Added support for Functions (using eval)
  • 2022-03-11 Bugfixes
  • 2022-03-10 Option autoClose Worker can also be a number. In this case it means that the worker will be closed if no more requests have been sent after "n" milliseconds.

Installation

npm install atomics-http

Using

Default http compatibility

const {https} = require('atomics-http');
// OR 
// const {http} = require('atomics-http');
 
var request = https.request({
    method: 'GET',
    headers: {},
    protocol: 'https:',
    host: '127.0.0.1',
    port: 80,
    path: '/'
});

request.setTimeout(10000);
try {
	var result = request.end();
	console.info(result.body.toString());
	console.info(result.response);
} catch (e) {
	console.error(e);
}

Default http compatibility 2

const {https} = require('atomics-http');
// OR 
// const {http} = require('atomics-http');

var request = https.request('https://example.com/');

request.setTimeout(10000);

try {
	var result = request.end();
	console.info(result.body.toString());
	console.info(result.response);
} catch (e) {
	console.error(e);
}

Autoclose worker (6 times slower!)

const {https} = require('atomics-http');
// OR 
// const {http} = require('atomics-http');

var request = https.request('https://example.com/', {autoCloseWorker: true});

request.setTimeout(10000);

try {
	var result = request.end();
	console.info(result.body.toString());
	console.info(result.response);
	// Close worker manualy request.closeWorker();
} catch (e) {
	console.error(e);
}

Autoclose worker by inactivity (best way!)

const {https} = require('atomics-http');
// OR 
// const {http} = require('atomics-http');

var time = 10000; // 10 Seconds 
var request = https.request('https://example.com/', {autoCloseWorker: time});

try {
	var result = request.end();
	console.info(result.body.toString());
	console.info(result.response);
	// Close worker manualy request.closeWorker();
} catch (e) {
	console.error(e);
}

POST Request

const {https} = require('atomics-http');
// OR 
// const {http} = require('atomics-http');

var params = new URLSearchParams({
	'tset1' : 'test%*&',
	'test2': true,
	'test3': 123
})
var post_data = params.toString();

var req = https.request({
	url: 'https://example.com/example.php',
	method: 'POST',
	headers: {
		'Content-Type': 'application/x-www-form-urlencoded',
		'Content-Length': Buffer.byteLength(post_data)
	}
});
req.write(post_data);
var result = req.end();
console.info(result.body.toString());
console.info(result.response);

Fileupload

const {https} = require('atomics-http');
// OR 
// const {http} = require('atomics-http');

var {FormDataStream} = require('form-data-stream');

var postData = new FormDataStream();
postData.set('test', 'abc');
postData.setFile('file1', './dummy.txt');

var options = {
	method: 'POST',
	headers: postData.headers()
};

let url = 'https://example.com/upload.php';
var req = https.request(url, options);

postData.pipeSync(req);

var result = req.end();
console.info(result.body.toString());
//console.info(result.response);

Download file

const ahttp = require('atomics-http').http;
// OR 
// const ahttps = require('atomics-http').https;

var request = httpSync.request('https://example.com/file.txt');

const file = fs.createWriteStream("file.txt");
request.pipe(file);
// OR request.pipe("file.txt");

try {
	var result = request.end();
	// Body will be null
	// console.info(result.body);
    // Response data:
	console.info(result.response);
} catch (e) {
	console.error(e);
}

All examples

ExtraOptions

  • autoCloseWorker => bool (false = no close, true = close after end) or int (milliseconds)
  • readTimeout => int milliseconds for reading data

Methods of ClientRequest

  • write
  • end
  • pipe
  • setTimeout
  • closeWorker

Benchmark 100 Requests

MethodTime
async3637
sync2720
sync_autoclose13243

At the moment not supports Functions in options

3.0.4

2 years ago

3.0.3

2 years ago

3.2.0

2 years ago

3.0.2

2 years ago

3.1.0

2 years ago

3.0.1

2 years ago

3.2.6

2 years ago

3.2.5

2 years ago

2.2.1

2 years ago

2.1.1

2 years ago

3.2.7

2 years ago

2.1.0

2 years ago

2.0.1

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago