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;
}
}