From eedc8069d2631c2411aff84960472bbcd81e9a88 Mon Sep 17 00:00:00 2001 From: Lionel Date: Wed, 29 Jun 2016 17:22:05 +0200 Subject: [PATCH] add missing properties of $websocket instance This PR add the missing properties of $websocket instance as mention in the documentation https://github.com/AngularClass/angular-websocket#properties --- angular-websocket/angular-websocket-tests.ts | 22 +++++++ angular-websocket/angular-websocket.d.ts | 61 +++++++++++++++++++- 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/angular-websocket/angular-websocket-tests.ts b/angular-websocket/angular-websocket-tests.ts index 78ba982aa5..980e2001d3 100644 --- a/angular-websocket/angular-websocket-tests.ts +++ b/angular-websocket/angular-websocket-tests.ts @@ -1,6 +1,7 @@ /// let dummySocket: ng.websocket.IWebSocket; +let dummyPromise: ng.IPromise; let provider: ng.websocket.IWebSocketProvider = (url: string) => { return dummySocket; @@ -23,3 +24,24 @@ socket.close(); socket.send("Some great data here!").finally(() => {}); socket.send({ list: [1, 2, 3, 4] }); + +socket.socket.send("data"); +socket.socket.close(); +socket.socket.close(1); +socket.socket.close(1, "reason"); + +socket.sendQueue.push({ message: "msg", defered: dummyPromise }); + +socket.onOpenCallbacks.push((event: Event) => {}); +socket.onCloseCallbacks.push((event: CloseEvent) => {}); +socket.onErrorCallbacks.push((event: Event) => {}); +socket.onMessageCallbacks.push({ fn: (event: MessageEvent) => {}, pattern: 'Some Filter', autoApply: true }); +socket.onMessageCallbacks.push({ fn: (event: MessageEvent) => {}, pattern: /Some Filter/, autoApply: true }); +socket.onMessageCallbacks.push({ fn: (event: MessageEvent) => {}, pattern: undefined, autoApply: true }); + +socket.readyState = 0; + +socket.initialTimeout = 10; + +socket.maxTimeout = 5000; + diff --git a/angular-websocket/angular-websocket.d.ts b/angular-websocket/angular-websocket.d.ts index 04859a7d16..a01e5eab3e 100644 --- a/angular-websocket/angular-websocket.d.ts +++ b/angular-websocket/angular-websocket.d.ts @@ -30,6 +30,19 @@ declare namespace angular.websocket { autoApply?: boolean; } + /** Type corresponding to onMessage callbaks stored in $Websocket#onMessageCallbacks instance. */ + type IWebSocketMessageHandler = { + fn: (evt: MessageEvent) => void; + pattern: string | RegExp; + autoApply: boolean; + } + + /** Type corresponding to items stored in $WebSocket#sendQueue instance. */ + type IWebSocketQueueItem = { + message: any; + defered: ng.IPromise; + } + interface IWebSocket { /** @@ -81,6 +94,52 @@ declare namespace angular.websocket { * * @param data data to send, if this is an object, it will be stringified before sending */ - send(data: string | {}): ng.IPromise; + send(data: string | {}): ng.IPromise; + + /** + * WebSocket instance. + */ + socket: WebSocket; + + /** + * Queue of send calls to be made on socket when socket is able to receive data. + */ + sendQueue: IWebSocketQueueItem[]; + + /** + * List of callbacks to be executed when the socket is opened. + */ + onOpenCallbacks: ((evt: Event) => void)[]; + + /** + * List of callbacks to be executed when a message is received from the socket. + */ + onMessageCallbacks: IWebSocketMessageHandler[]; + + /** + * List of callbacks to be executed when an error is received from the socket. + */ + onErrorCallbacks: ((evt: Event) => void)[]; + + /** + * List of callbacks to be executed when the socket is closed. + */ + onCloseCallbacks: ((evt: CloseEvent) => void)[]; + + /** + * Returns either the readyState value from the underlying WebSocket instance + * or a proprietary value representing the internal state + */ + readyState: number; + + /** + * The initial timeout. + */ + initialTimeout: number; + + /** + * Maximun timeout used to determine reconnection delay. + */ + maxTimeout: number; } }