actionhero
Version:
The reusable, scalable, and quick node.js API server for stateless and stateful applications
36 lines (35 loc) • 1.81 kB
TypeScript
import { api, chatRoom, Initializer } from "../index";
import { Connection } from "../classes/connection";
import * as ChatModule from "./../modules/chatRoom";
export interface ChatRoomApi {
middleware: {
[key: string]: ChatModule.chatRoom.ChatMiddleware;
};
globalMiddleware: Array<string>;
keys: {
[keys: string]: string;
};
messageChannel: string;
broadcast: ChatRoomInitializer["broadcast"];
generateMessagePayload: ChatRoomInitializer["generateMessagePayload"];
incomingMessage: ChatRoomInitializer["incomingMessage"];
incomingMessagePerConnection?: ChatRoomInitializer["incomingMessagePerConnection"];
runMiddleware: ChatRoomInitializer["runMiddleware"];
removeMember: ChatRoomInitializer["removeMember"];
}
export type ChatMiddlewareDirections = "join" | "leave" | "onSayReceive" | "say";
export type MessagePayloadType = ReturnType<typeof api.chatRoom.generateMessagePayload>;
/**
* Chat & Realtime Communication Methods
*/
export declare class ChatRoomInitializer extends Initializer {
constructor();
broadcast: (connection: Partial<Connection>, room: string, message: object | Array<any> | string) => Promise<void>;
generateMessagePayload: (message: chatRoom.ChatPubSubMessage) => Record<string, any>;
incomingMessage: (message: ChatModule.chatRoom.ChatPubSubMessage) => void;
incomingMessagePerConnection: (connection: Connection, messagePayload: MessagePayloadType) => Promise<void>;
runMiddleware: (connection: Partial<Connection>, room: string, direction: ChatMiddlewareDirections, messagePayload?: MessagePayloadType) => Promise<Record<string, any>>;
removeMember: (connectionId: string, room: string, toWaitRemote?: boolean) => Promise<any>;
initialize(): Promise<void>;
start(): Promise<void>;
}