dlovely-websocket
Version:
WebSocket For Dlovely
55 lines (54 loc) • 1.73 kB
TypeScript
/// <reference types="@types/node/tls" />
/// <reference types="@types/node/events" />
import { EventEmitter } from 'events'
import tls from 'tls'
import { AppConnection } from './SocketConnect'
import { socketControl } from './SocketControl'
export declare namespace SocketApp {
interface ProtocolCallback {
(conn: AppConnection, protocols?: string[]): string | undefined
}
type Options = tls.TlsOptions & {
secure?: boolean
debugger?: boolean
} & (
| {
selectProtocol: ProtocolCallback
}
| {
validProtocols: string[]
}
| {}
)
type ConnectCallback<Data = any> = (
data: Data,
conn: AppConnection,
next: () => void
) => void
type SocketCallBack = (conn: AppConnection) => void
interface ControlOptions
extends Record<'default', Record<string, Record<string, any>>> {}
type Roles = keyof ControlOptions & string
type StoreNames<Role extends Roles> = keyof ControlOptions[Role] & string
type Store<
Role extends Roles,
Name extends StoreNames<Role>
> = ControlOptions[Role][Name] & Record<string, any>
interface ConnectionExtraParams {
keepRole?: () => void
}
}
export declare class SocketApp extends EventEmitter {
private readonly socket
constructor(secure: boolean, options?: SocketApp.Options)
_selectProtocol?: SocketApp.ProtocolCallback
listen(port: number, callback?: () => void): void
listen(port: number, host: string, callback?: () => void): void
close(callback?: () => void): void
private signs
sign<Data = any>(
sign: string,
...cbs: SocketApp.ConnectCallback<Data>[]
): this
control: typeof socketControl
}