///
import EventEmitter from "eventemitter3";
import ISocket from "../isocket";
import { StreamEvent } from "../types";
import Peer from "./peer";
import Negotiator from "./negotiator";
type PeerSocketOptions = {
remoteAddress: string;
localAddress?: string;
};
/**
* 封装最终对外使用的简易类
*/
export default class PeerDataSocket extends EventEmitter implements ISocket {
readonly provider: Peer;
private readonly _id;
private _peer;
private _source;
private _destroyed;
private readonly _sessionId;
socket: RTCDataChannel | null;
options: PeerSocketOptions;
type: "accept" | "connect";
private lastTime;
private pidKeeyAlive;
get peer(): string;
get id(): string;
get sessionId(): string;
get source(): string;
get writable(): boolean;
get readable(): boolean;
get remoteAddress(): string;
get remotePort(): number;
get localAddress(): string;
get localPort(): number;
get destroyed(): boolean;
get readyState(): "open" | "opening" | "closed";
isPaused(): boolean;
get readableLength(): number;
get writableLength(): number;
negotiator: Negotiator | null;
constructor(provider: Peer, { peer, sessionId, source, negotiated }: {
peer: string;
source: string;
sessionId?: string;
negotiated: boolean;
});
init(socket: RTCDataChannel, options: PeerSocketOptions): void;
private initEvent;
read(ttl?: number): Promise;
write(chunk: string | Buffer, callback?: (err: Error) => void): boolean;
end(chunk?: string | Buffer): void;
pipe(socket: ISocket): ISocket;
pause(): void;
resume(): void;
destroy(err?: Error | undefined): void;
close(err?: Error): void;
clear(): void;
setKeepAlive(bool: boolean, ttl?: number): void;
}
export {};