libhyperproxy/dist/peer.d.ts

60 lines
2.0 KiB
TypeScript
Raw Normal View History

2023-01-12 17:50:38 +00:00
import Proxy from "./proxy.js";
import Socket from "./socket.js";
2023-03-02 10:37:30 +00:00
export type OnOpen = (peer: Peer, socket: Socket, data: any) => {
2023-01-12 17:50:38 +00:00
connect: boolean;
} | Promise<{
connect: boolean;
}> | Promise<void> | void;
2023-03-02 10:37:30 +00:00
export type OnData = (peer: Peer, data: any) => void;
2023-01-12 17:50:38 +00:00
export type OnReceive = OnData;
export type OnClose = OnData;
export type OnSend = OnData;
2023-03-03 10:22:55 +00:00
export type OnChannel = (peer: Peer, channel: any) => void;
2023-03-02 10:37:30 +00:00
export type OnOpenBound = (socket: Socket, data: any) => {
connect: boolean;
} | Promise<{
connect: boolean;
}> | Promise<void> | void;
export type OnDataBound = (data: any) => void;
export type OnReceiveBound = OnDataBound;
export type OnCloseBound = OnDataBound;
export type OnSendBound = OnDataBound;
2023-03-03 10:22:55 +00:00
export type OnChannelBound = (channel: any) => void;
2023-01-12 17:50:38 +00:00
export interface DataSocketOptions {
onopen?: OnOpen;
onreceive?: OnReceive;
onsend?: OnSend;
onclose?: OnClose;
2023-03-03 10:22:55 +00:00
onchannel?: OnChannel;
2023-02-26 03:16:59 +00:00
emulateWebsocket?: boolean;
2023-01-12 17:50:38 +00:00
}
export interface PeerOptions {
peer: any;
muxer: any;
}
export interface PeerOptionsWithProxy extends PeerOptions {
proxy: Proxy;
}
2023-04-16 02:17:57 +00:00
export default abstract class Peer {
protected _proxy: Proxy;
protected _peer: any;
protected _muxer: any;
protected _onopen: OnOpenBound;
protected _onreceive: OnReceiveBound;
protected _onsend: OnSendBound;
protected _onclose: OnCloseBound;
protected _onchannel: OnChannelBound;
protected _emulateWebsocket: boolean;
constructor({ proxy, peer, muxer, onopen, onreceive, onsend, onclose, onchannel, emulateWebsocket, }: PeerOptionsWithProxy & DataSocketOptions);
protected _socket?: Socket;
2023-03-05 08:00:28 +00:00
get socket(): Socket;
2023-04-16 02:17:57 +00:00
protected _channel?: any;
2023-03-02 10:41:30 +00:00
get channel(): any;
2023-04-16 02:17:57 +00:00
protected abstract initSocket(): any;
protected abstract handleChannelOnOpen(m: any): Promise<void>;
protected abstract handleChannelOnClose(socket: Socket): Promise<void>;
protected initChannel(): Promise<void>;
2023-01-12 17:50:38 +00:00
init(): Promise<void>;
2023-04-16 02:17:57 +00:00
protected initMessages(): Promise<void>;
2023-01-12 17:50:38 +00:00
}