@libp2p/websockets
Version:
JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec
57 lines • 2.34 kB
TypeScript
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