@jayzyaj/centrifuge-js-cyy
Version:
Centrifuge and Centrifugo client for NodeJS and browser
189 lines (164 loc) • 5.97 kB
TypeScript
// Type definitions for centrifuge 2.*.*
// Project: https://github.com/centrifugal/centrifuge-js
// Definitions by: Jekaspekas <https://github.com/jekaspekas>
// TypeScript Version: 3.4.5
export = Centrifuge;
// From https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/node/globals.d.ts
declare class EventEmitter {
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
on(event: string | symbol, listener: (...args: any[]) => void): this;
once(event: string | symbol, listener: (...args: any[]) => void): this;
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
off(event: string | symbol, listener: (...args: any[]) => void): this;
removeAllListeners(event?: string | symbol): this;
setMaxListeners(n: number): this;
getMaxListeners(): number;
listeners(event: string | symbol): Function[];
rawListeners(event: string | symbol): Function[];
emit(event: string | symbol, ...args: any[]): boolean;
listenerCount(type: string | symbol): number;
// Added in Node 6...
prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
eventNames(): Array<string | symbol>;
}
declare class Centrifuge extends EventEmitter {
constructor(url: string, options?: Centrifuge.Options);
setToken(token: string): void;
setConnectData(data: any): void;
setRefreshHeaders(data: any): void;
setRefreshParams(data: any): void;
setRefreshData(data: any): void;
setSubscribeHeaders(data: any): void;
setSubscribeParams(data: any): void;
rpc(data: any): Promise<any>;
namedRPC(method: string, data: any): Promise<any>;
send(data: any): Promise<any>;
publish(channel: string, data: any): Promise<any>;
getSub(channel: string): Centrifuge.Subscription;
isConnected(): boolean;
connect(): void;
disconnect(): void;
ping(): void;
startBatching(): void;
stopBatching(): void;
startSubscribeBatching(): void;
stopSubscribeBatching(): void;
subscribe(channel: string, events?: (...args: any[]) => void, options?: any): Centrifuge.Subscription;
subscribe(channel: string, events?: Centrifuge.SubscriptionEvents, options?: any): Centrifuge.Subscription;
}
declare namespace Centrifuge {
export interface Options {
debug?: boolean;
websocket?: any;
sockjs?: any;
promise?: any;
minRetry?: number;
maxRetry?: number;
timeout?: number;
ping?: boolean;
pingInterval?: number;
pongWaitTimeout?: number;
privateChannelPrefix?: string;
onTransportClose?: (ctx: object) => void;
sockjsServer?: string;
sockjsTransports?: string[];
refreshEndpoint?: string;
refreshHeaders?: object;
refreshParams?: object;
refreshData?: object;
refreshAttempts?: number;
refreshInterval?: number;
onRefreshFailed?: () => void;
onRefresh?: (ctx: object, cb: (resp: RefreshResponse) => void) => void;
subscribeEndpoint?: string;
subscribeHeaders?: object;
subscribeParams?: object;
subRefreshInterval?: number;
onPrivateSubscribe?: (ctx: SubscribePrivateContext, cb: (resp: SubscribePrivateResponse) => void) => void;
}
export class Subscription extends EventEmitter {
channel: string;
ready(callback: (ctx: SubscribeSuccessContext) => void, errback: (ctx: SubscribeErrorContext) => void): void;
subscribe(): void;
unsubscribe(): void;
publish(data: any): Promise<any>;
presence(): Promise<PresenceResult>;
presenceStats(): Promise<PresenceStatsResult>;
history(): Promise<HistoryResult>;
}
export interface SubscriptionEvents {
publish?: (ctx: PublicationContext) => void;
join?: (ctx: JoinLeaveContext) => void;
leave?: (ctx: JoinLeaveContext) => void;
subscribe?: (ctx: SubscribeSuccessContext) => void;
error?: (ctx: SubscribeErrorContext) => void;
unsubscribe?: (ctx: UnsubscribeContext) => void;
}
export interface PublicationContext {
data: any;
info?: ClientInfo;
seq?: number;
gen?: number;
}
export interface ClientInfo {
user? : string;
client? : string;
conn_info?: any;
chan_info?: any;
}
export interface JoinLeaveContext {
info: ClientInfo;
}
export interface SubscribeSuccessContext {
channel: string;
isResubscribe: boolean;
recovered: boolean;
}
export interface SubscribeErrorContext {
error: string;
channel: string;
isResubscribe: boolean;
}
export interface UnsubscribeContext {
channel: string;
}
export interface SubscribePrivateContext {
data: SubscribePrivateData;
}
export interface SubscribePrivateData {
client: string;
channels: string[];
}
export interface RefreshResponse {
status: number;
data: RefreshTokenData;
}
export interface RefreshTokenData {
token: string;
}
export interface SubscribePrivateResponse {
status: number;
data: SubscribePrivateResponseData;
}
export interface SubscribePrivateResponseData {
channels: PrivateChannelData[];
}
export interface PrivateChannelData {
channel: string;
token: string;
}
export interface PresenceResult {
presence: PresenceMap;
}
export interface PresenceMap {
[key: string]: ClientInfo;
}
export interface PresenceStatsResult {
num_clients: number;
num_users: number;
}
export interface HistoryResult {
publications: PublicationContext[];
}
}