webstomp-obs
Version:
Stomp over websocket using observable
61 lines (52 loc) • 1.9 kB
text/typescript
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import Frame from './frame';
import { ACK, AckHeaders, NackHeaders,
ConnectionHeaders, DisconnectHeaders, SubscribeHeaders, UnsubscribeHeaders } from './headers';
import { HeartbeatOptions } from './heartbeat';
export interface IWebSocketHandler<T> {
initConnection: (headers: ConnectionHeaders) => Observable<T>;
}
export interface IEvent {
data: any;
}
export interface IWebSocketObservable {
messageReceived: Observable<IEvent>;
messageSender: Subject<any>;
}
export interface IProtocol {
getMessageId: (frame: Frame) => string,
getSubscription: (frame: Frame) => string,
connect: (headers: ConnectionHeaders) => any,
disconnect: (headers: DisconnectHeaders) => any,
send: (headers: any, body: any) => any;
begin: (transaction: any) => any;
commit: (transaction: string) => any;
abort: (transaction: string) => any;
ack: (messageID: string, subscription: string, headers?: AckHeaders) => any;
nack?: (messageID: string, subscription: string, headers?: NackHeaders) => any;
subscribe: (headers: SubscribeHeaders) => any;
unSubscribe: (headers: UnsubscribeHeaders) => any;
hearbeatMsg?: () => any;
}
export interface IConnectedObservable {
messageReceipted: Observable<Frame>;
errorReceived: Observable<Frame>;
subscribeTo: (destination: string, headers: {id?: string, ack?: ACK}) => Observable<Frame>;
messageSender: Subject<any>;
protocol: IProtocol;
}
export interface WsOptions {
binary: boolean;
heartbeat: HeartbeatOptions | boolean;
debug: boolean;
}
export interface IWebSocket {
binaryType: string,
onmessage: Function,
onclose: Function,
onopen: Function,
close: Function,
send: Function,
url: string
}