///
import EventEmitter from "eventemitter3";
import ISocket from "./isocket";
import { CMD, SocketType, StreamEvent } from "./types";
import IOSocket from "./io.socket";
import AigoManager from "./helpers/aigo/aigo.manager";
import AigoSocket from "./helpers/aigo/aigo.socket";
export type Header = {
id: string;
idx: number;
total: number;
sid: string;
cmd: CMD;
};
export type SegDataInfo = {
list: {
data: Buffer;
idx: number;
total: number;
}[];
total: number;
fillTotal: number;
startTime: number;
header: Header;
};
export declare enum SerializationType {
Binary = "binary",
BinaryUTF8 = "binary-utf8",
JSON = "json",
String = "string"
}
type AcceptData = {
headers: {
host: string;
port: number;
};
};
export type SeiralStreamEvent = StreamEvent & {
accept: (socket: AigoSocket, data: AcceptData) => void;
turn: (socket: AigoSocket, data: AcceptData) => void;
cmd: (cmd: CMD, sessionId: string, chunk?: Buffer | string) => void;
heartbeat: () => void;
};
/**
* 流序列化socket类
*/
export default class SerialSocket extends EventEmitter implements ISocket {
readonly socket: IOSocket;
readonly aigoManager?: AigoManager | undefined;
private _id;
type: SocketType;
private dataTransform;
private _destroyed;
private pidHeartbeat;
private _lastHeartbeat;
private keepAliveTime;
get id(): string;
get sessionId(): string;
get destroyed(): boolean;
get writable(): boolean;
get readable(): boolean;
get remoteAddress(): string;
get remotePort(): number;
get localAddress(): string;
get localPort(): number;
get readyState(): import("./types").ReadyState;
isPaused(): boolean;
get readableLength(): number;
get writableLength(): number;
constructor(socket: IOSocket, aigoManager?: AigoManager | undefined);
private heartbeat;
pipe(socket: ISocket): ISocket;
private initEvent;
read(ttl?: number | undefined): Promise;
pause(): void;
resume(): void;
destroy(err?: Error): void;
close(err?: Error): void;
private emitClient;
/**
* 往客户端写入数据
* @param data 数据
* @param secret 是否加密传输,默认加密
*/
write(data: Buffer | string | ArrayBuffer | object, sessionId?: string): boolean;
end(data: Buffer | string | ArrayBuffer | object | undefined, sessionId: string): void;
writeCMD(cmd: CMD, sessionId: string, data?: Buffer | string | ArrayBuffer | object): boolean;
connectCMD(sessionId: string, { host, port }: {
host: string;
port: number;
}): void;
turnCMD(sessionId: string, { host, port }: {
host: string;
port: number;
}): void;
setKeepAlive(enable: boolean, initialDelay: number): void;
private handleCMD;
}
export {};