@arcjet/transport
Version:
Transport mechanisms for the Arcjet protocol
31 lines (28 loc) • 1.08 kB
JavaScript
import { Http2SessionManager, createConnectTransport } from '@connectrpc/connect-node';
/**
* Create a transport that talks over HTTP/2 using Connect RPC.
*
* A thin wrapper around {@linkcode createConnectTransport}.
*
* @param baseUrl
* Base URI for all HTTP requests (example: `https://example.com/my-api`).
* @returns
* Connect transport used to make RPC calls.
*/
function createTransport(baseUrl) {
// We create our own session manager so we can attempt to pre-connect
const sessionManager = new Http2SessionManager(baseUrl, {
// AWS Global Accelerator doesn't support PING so we use a very high idle
// timeout. Ref:
// https://docs.aws.amazon.com/global-accelerator/latest/dg/introduction-how-it-works.html#about-idle-timeout
idleConnectionTimeoutMs: 340 * 1000,
});
// We ignore the promise result because this is an optimistic pre-connect
sessionManager.connect();
return createConnectTransport({
baseUrl,
httpVersion: "2",
sessionManager,
});
}
export { createTransport };