UNPKG

@libp2p/websockets

Version:

JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec

57 lines 2.34 kB
import http from 'node:http'; import net from 'node:net'; import { TypedEventEmitter } from 'main-event'; import * as ws from 'ws'; import type { ComponentLogger, Listener, ListenerEvents, CreateListenerOptions, CounterGroup, MetricGroup, Metrics, TLSCertificate, Libp2pEvents } from '@libp2p/interface'; import type { Multiaddr } from '@multiformats/multiaddr'; import type { TypedEventTarget } from 'main-event'; import type { Server } from 'node:http'; import type { Duplex } from 'node:stream'; import type tls from 'node:tls'; export interface WebSocketListenerComponents { logger: ComponentLogger; events: TypedEventTarget<Libp2pEvents>; metrics?: Metrics; } export interface WebSocketListenerInit extends CreateListenerOptions { server?: Server; cert?: string; key?: string; http?: http.ServerOptions; https?: http.ServerOptions; } export interface WebSocketListenerMetrics { status?: MetricGroup; errors?: CounterGroup; events?: CounterGroup; } export declare class WebSocketListener extends TypedEventEmitter<ListenerEvents> implements Listener { private readonly log; private readonly logger; private readonly server; private readonly wsServer; private readonly metrics; private readonly sockets; private readonly upgrader; private readonly httpOptions?; private readonly httpsOptions?; private readonly shutdownController; private http?; private https?; private addr?; private listeningMultiaddr?; constructor(components: WebSocketListenerComponents, init: WebSocketListenerInit); onSocketConnection(socket: net.Socket): Promise<void>; onWsServerConnection(socket: ws.WebSocket, req: http.IncomingMessage): void; onUpgrade(req: http.IncomingMessage, socket: Duplex, head: Buffer): void; onTLSClientError(err: Error, socket: tls.TLSSocket): void; listen(ma: Multiaddr): Promise<void>; onCertificateProvision(event: CustomEvent<TLSCertificate>): void; onCertificateRenew(event: CustomEvent<TLSCertificate>): void; close(): Promise<void>; getAddrs(): Multiaddr[]; updateAnnounceAddrs(): void; private httpRequestHandler; } export declare function createListener(components: WebSocketListenerComponents, init: WebSocketListenerInit): Listener; //# sourceMappingURL=listener.d.ts.map