rocket.chat.mqtt
Version:
It's a MQTT Server, using redis to scale horizontally.
85 lines (67 loc) • 3.04 kB
TypeScript
/// <reference types="node" />
import { IPublishPacket, ISubscribePacket, ISubscription, IUnsubscribePacket } from 'mqtt-packet'
import { Duplex } from 'stream'
import EventEmitter = NodeJS.EventEmitter
declare enum AuthErrorCode {
UNNACCEPTABLE_PROTOCOL = 1,
IDENTIFIER_REJECTED = 2,
SERVER_UNAVAILABLE = 3,
BAD_USERNAME_OR_PASSWORD = 4
}
interface Client extends EventEmitter {
id: string
clean: boolean
on (event: 'error', cb: (err: Error) => void): this
publish (message: IPublishPacket, callback?: () => void): void
subscribe (
subscriptions: ISubscription | ISubscription[] | ISubscribePacket,
callback?: () => void
): void
unsubscribe (topicObjects: ISubscription | ISubscription[], callback?: () => void): void
close (callback?: () => void): void
}
type AuthenticateCallback = (
client: Client,
username: string,
password: string,
done: (err: Error & { returnCode: AuthErrorCode } | null, success: boolean | null) => void
) => void
type AuthorizePublishCallback = (client: Client, packet: IPublishPacket, done: (err?: Error | null) => void) => void
type AuthorizeSubscribeCallback = (client: Client, subscription: ISubscription, done: (err: Error | null, subscription?: ISubscription | null) => void) => void
type AuthorizeForwardCallback = (client: Client, packet: IPublishPacket) => IPublishPacket | null | void
type PublishedCallback = (packet: IPublishPacket, client: Client, done: () => void) => void
interface AedesOptions {
mq?: any
persistence?: any
concurrency?: number
heartbeatInterval?: number
connectTimeout?: number
authenticate?: AuthenticateCallback
authorizePublish?: AuthorizePublishCallback
authorizeSubscribe?: AuthorizeSubscribeCallback
authorizeForward?: AuthorizeForwardCallback
published?: PublishedCallback
}
interface Aedes extends EventEmitter {
handle: (stream: Duplex) => void
authenticate: AuthenticateCallback
authorizePublish: AuthorizePublishCallback
authorizeSubscribe: AuthorizeSubscribeCallback
authorizeForward: AuthorizeForwardCallback
published: PublishedCallback
on (event: 'closed', cb: () => void): this
on (event: 'client' | 'clientDisconnect' | 'keepaliveTimeout' | 'connackSent', cb: (client: Client) => void): this
on (event: 'clientError' | 'connectionError', cb: (client: Client, error: Error) => void): this
on (event: 'ping' | 'publish' | 'ack', cb: (packet: any, client: Client) => void): this
on (event: 'subscribe' | 'unsubscribe', cb: (subscriptions: ISubscription | ISubscription[] | ISubscribePacket, client: Client) => void): this
publish (packet: IPublishPacket & { topic: string | Buffer }, done: () => void): void
subscribe (topic: string, callback: (packet: ISubscribePacket, cb: () => void) => void, done: () => void): void
unsubscribe (
topic: string,
callback: (packet: IUnsubscribePacket, cb: () => void) => void,
done: () => void
): void
close (callback?: () => void): void
}
declare function aedes (options?: AedesOptions): Aedes
export = aedes