/popsicle-transport-http

Popsicle transport for sending requests over HTTP1 and HTTP2

Primary LanguageTypeScriptMIT LicenseMIT

Popsicle Transport HTTP

NPM version NPM downloads Build status Build coverage

Popsicle transport for sending requests over HTTP1 and HTTP2.

Installation

npm install popsicle-transport-http --save

Usage

import { transport } from "popsicle-transport-http";

const req = new Request("/");
const res = await transport()(req, done);

Transport Options

The transport function sends the Servie Request to a remote server.

  • keepAlive?: number Keep connection alive for re-use with delay between probe (default: 5000, 5 seconds)
  • idleSocketTimeout?: number Maximum duration for a socket to have no traffic (default: 300_000, 5 minutes)
  • idleRequestTimeout?: number Maximum duration for a HTTP request to have no traffic (default: 30_000, 30 seconds)
  • servername?: string Override remote server name for TLS
  • rejectUnauthorized?: boolean Rejects unauthorized TLS connections
  • negotiateHttpVersion?: NegotiateHttpVersion Configure HTTP version negotiation (default: HTTP2_FOR_HTTPS)
  • lookup?: DnsLookup Override default DNS resolution (default: dns.lookup)
  • TLS options:
    • ca?: string | Buffer | Array<string | Buffer> Set TLS CA
    • cert?: string | Buffer Set TLS certificate
    • key?: string | Buffer Set TLS key
    • secureContext?: SecureContext Set TLS secure context
    • secureProtocol?: string Set TLS secure protocol
    • secureOptions?: number Set TLS secure options
  • Custom connection managers (default: Infinity active sockets):
    • tlsSockets?: ConnectionManager<TLSSocket>
    • netSockets?: ConnectionManager<Socket>
    • http2Sessions?: ConnectionManager<ClientHttp2Session>
  • Custom create connections (all methods support async promises):
    • createHttp2Connection?: (authority, socket) => ClientHttp2Session
    • createNetConnection?: (options) => Socket
    • createTlsConnection?: (options) => TLSSocket

TypeScript

This project is written using TypeScript and publishes the definitions directly to NPM.

License

MIT