Implementation of Basic Methods of RealTime API Class
parent
83f156b94c
commit
d52a4547bc
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Rocket.Chat RealTime API
|
||||
*/
|
||||
import { Observable } from "rxjs";
|
||||
import { WebSocketSubject } from 'rxjs/observable/dom/WebSocketSubject';
|
||||
export declare class RealTimeAPI {
|
||||
url: string;
|
||||
webSocket: WebSocketSubject<{}>;
|
||||
constructor(param: string | WebSocketSubject<{}>);
|
||||
/**
|
||||
* Returns the Observable to the RealTime API Socket
|
||||
*/
|
||||
getObservable(): Observable<any>;
|
||||
/**
|
||||
* onMessage
|
||||
*/
|
||||
onMessage(messageHandler?: ((value: {}) => void) | undefined): void;
|
||||
/**
|
||||
* onError
|
||||
*/
|
||||
onError(errorHandler?: ((error: any) => void) | undefined): void;
|
||||
/**
|
||||
* onCompletion
|
||||
*/
|
||||
onCompletion(completionHandler?: (() => void) | undefined): void;
|
||||
/**
|
||||
* Subscribe to the WebSocket of the RealTime API
|
||||
*/
|
||||
subscribe(messageHandler?: ((value: {}) => void) | undefined, errorHandler?: ((error: any) => void) | undefined, completionHandler?: (() => void) | undefined): void;
|
||||
/**
|
||||
* sendMessage to Rocket.Chat Server
|
||||
*/
|
||||
sendMessage(messageObject: {}): void;
|
||||
/**
|
||||
* getObservableFilteredByMessageType
|
||||
*/
|
||||
getObservableFilteredByMessageType(messageType: string): Observable<any>;
|
||||
/**
|
||||
* getObservableFilteredByID
|
||||
*/
|
||||
getObservableFilteredByID(id: string): Observable<any>;
|
||||
/**
|
||||
* connectToServer
|
||||
*/
|
||||
connectToServer(): Observable<any>;
|
||||
/**
|
||||
* keepAlive, Ping and Pong to the Rocket.Chat Server to Keep the Connection Alive.
|
||||
*/
|
||||
keepAlive(): void;
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
"use strict";
|
||||
/**
|
||||
* Rocket.Chat RealTime API
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var rxjs_1 = require("rxjs");
|
||||
var RealTimeAPI = (function () {
|
||||
function RealTimeAPI(param) {
|
||||
switch (typeof param) {
|
||||
case "string":
|
||||
this.url = param;
|
||||
this.webSocket = rxjs_1.Observable.webSocket(this.url);
|
||||
break;
|
||||
case "object":
|
||||
this.webSocket = param;
|
||||
this.url = this.webSocket.url;
|
||||
break;
|
||||
default:
|
||||
throw new Error("Invalid Parameter to the Constructor, Parameter must be of Type WebSocketSubject or URL but was found of type \"" + typeof param + "\"");
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Returns the Observable to the RealTime API Socket
|
||||
*/
|
||||
RealTimeAPI.prototype.getObservable = function () {
|
||||
return this.webSocket.catch(function (err) { return rxjs_1.Observable.of(err); });
|
||||
};
|
||||
/**
|
||||
* onMessage
|
||||
*/
|
||||
RealTimeAPI.prototype.onMessage = function (messageHandler) {
|
||||
this.subscribe(messageHandler, undefined, undefined);
|
||||
};
|
||||
/**
|
||||
* onError
|
||||
*/
|
||||
RealTimeAPI.prototype.onError = function (errorHandler) {
|
||||
this.subscribe(undefined, errorHandler, undefined);
|
||||
};
|
||||
/**
|
||||
* onCompletion
|
||||
*/
|
||||
RealTimeAPI.prototype.onCompletion = function (completionHandler) {
|
||||
this.subscribe(undefined, undefined, completionHandler);
|
||||
};
|
||||
/**
|
||||
* Subscribe to the WebSocket of the RealTime API
|
||||
*/
|
||||
RealTimeAPI.prototype.subscribe = function (messageHandler, errorHandler, completionHandler) {
|
||||
this.getObservable().subscribe(messageHandler, errorHandler, completionHandler);
|
||||
};
|
||||
/**
|
||||
* sendMessage to Rocket.Chat Server
|
||||
*/
|
||||
RealTimeAPI.prototype.sendMessage = function (messageObject) {
|
||||
this.webSocket.next(JSON.stringify(messageObject));
|
||||
};
|
||||
/**
|
||||
* getObservableFilteredByMessageType
|
||||
*/
|
||||
RealTimeAPI.prototype.getObservableFilteredByMessageType = function (messageType) {
|
||||
return this.getObservable().filter(function (message) { return message.msg === messageType; });
|
||||
};
|
||||
/**
|
||||
* getObservableFilteredByID
|
||||
*/
|
||||
RealTimeAPI.prototype.getObservableFilteredByID = function (id) {
|
||||
return this.getObservable().filter(function (message) { return message.id === id; });
|
||||
};
|
||||
/**
|
||||
* connectToServer
|
||||
*/
|
||||
RealTimeAPI.prototype.connectToServer = function () {
|
||||
this.sendMessage({ "msg": "connect", "version": "1", "support": ["1", "pre2", "pre1"] });
|
||||
return this.getObservableFilteredByMessageType("connected");
|
||||
};
|
||||
/**
|
||||
* keepAlive, Ping and Pong to the Rocket.Chat Server to Keep the Connection Alive.
|
||||
*/
|
||||
RealTimeAPI.prototype.keepAlive = function () {
|
||||
var _this = this;
|
||||
this.getObservableFilteredByMessageType("ping").subscribe(function (message) { return _this.sendMessage({ msg: "pong" }); });
|
||||
};
|
||||
return RealTimeAPI;
|
||||
}());
|
||||
exports.RealTimeAPI = RealTimeAPI;
|
||||
//# sourceMappingURL=RealTimeAPI.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"RealTimeAPI.js","sourceRoot":"","sources":["../src/RealTimeAPI.ts"],"names":[],"mappings":"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"}
|
@ -0,0 +1 @@
|
||||
export { RealTimeAPI } from "./RealTimeAPI";
|
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var RealTimeAPI_1 = require("./RealTimeAPI");
|
||||
exports.RealTimeAPI = RealTimeAPI_1.RealTimeAPI;
|
||||
//# sourceMappingURL=index.js.map
|
@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,6CAA4C;AAAnC,oCAAA,WAAW,CAAA"}
|
@ -0,0 +1,100 @@
|
||||
/**
|
||||
* Rocket.Chat RealTime API
|
||||
*/
|
||||
|
||||
import { Observable } from "rxjs";
|
||||
import { WebSocketSubject } from 'rxjs/observable/dom/WebSocketSubject';
|
||||
|
||||
export class RealTimeAPI {
|
||||
public url: string;
|
||||
public webSocket: WebSocketSubject<{}>;
|
||||
|
||||
constructor(param: string | WebSocketSubject<{}>) {
|
||||
switch (typeof param) {
|
||||
case "string":
|
||||
this.url = param as string;
|
||||
this.webSocket = Observable.webSocket(this.url);
|
||||
break;
|
||||
case "object":
|
||||
this.webSocket = param as WebSocketSubject<{}>;
|
||||
this.url = this.webSocket.url;
|
||||
break;
|
||||
default:
|
||||
throw new Error(`Invalid Parameter to the Constructor, Parameter must be of Type WebSocketSubject or URL but was found of type "${typeof param}"`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Observable to the RealTime API Socket
|
||||
*/
|
||||
public getObservable() {
|
||||
return this.webSocket.catch(err => Observable.of(err));
|
||||
}
|
||||
|
||||
/**
|
||||
* onMessage
|
||||
*/
|
||||
public onMessage(messageHandler?: ((value: {}) => void) | undefined): void {
|
||||
this.subscribe(messageHandler, undefined, undefined);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* onError
|
||||
*/
|
||||
public onError(errorHandler?: ((error: any) => void) | undefined): void {
|
||||
this.subscribe(undefined, errorHandler, undefined);
|
||||
}
|
||||
|
||||
/**
|
||||
* onCompletion
|
||||
*/
|
||||
public onCompletion(completionHandler?: (() => void) | undefined): void {
|
||||
this.subscribe(undefined, undefined, completionHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Subscribe to the WebSocket of the RealTime API
|
||||
*/
|
||||
public subscribe(messageHandler?: ((value: {}) => void) | undefined, errorHandler?: ((error: any) => void) | undefined, completionHandler?: (() => void) | undefined) {
|
||||
this.getObservable().subscribe(messageHandler, errorHandler, completionHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
* sendMessage to Rocket.Chat Server
|
||||
*/
|
||||
public sendMessage(messageObject: {}): void {
|
||||
this.webSocket.next(JSON.stringify(messageObject));
|
||||
}
|
||||
|
||||
/**
|
||||
* getObservableFilteredByMessageType
|
||||
*/
|
||||
public getObservableFilteredByMessageType(messageType: string) {
|
||||
return this.getObservable().filter((message: any) => message.msg === messageType);
|
||||
}
|
||||
|
||||
/**
|
||||
* getObservableFilteredByID
|
||||
*/
|
||||
public getObservableFilteredByID(id: string) {
|
||||
return this.getObservable().filter((message: any) => message.id === id);
|
||||
}
|
||||
|
||||
/**
|
||||
* connectToServer
|
||||
*/
|
||||
public connectToServer() {
|
||||
this.sendMessage({ "msg": "connect", "version": "1", "support": ["1", "pre2", "pre1"] });
|
||||
return this.getObservableFilteredByMessageType("connected");
|
||||
}
|
||||
|
||||
/**
|
||||
* keepAlive, Ping and Pong to the Rocket.Chat Server to Keep the Connection Alive.
|
||||
*/
|
||||
public keepAlive(): void {
|
||||
this.getObservableFilteredByMessageType("ping").subscribe(
|
||||
message => this.sendMessage({ msg: "pong" })
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
export { RealTimeAPI } from "./RealTimeAPI";
|
Loading…
Reference in New Issue