diff --git a/angular-websocket/angular-websocket-tests.ts b/angular-websocket/angular-websocket-tests.ts new file mode 100644 index 0000000000..78ba982aa5 --- /dev/null +++ b/angular-websocket/angular-websocket-tests.ts @@ -0,0 +1,25 @@ +/// + +let dummySocket: ng.websocket.IWebSocket; + +let provider: ng.websocket.IWebSocketProvider = (url: string) => { + return dummySocket; +} + +let socket = provider("wss://localhost"); + +socket.onOpen((event) => {}) + .onClose((event) => {}) + .onError((event) => {}) + .onMessage((event) => {}); + +socket.onMessage((event) => {}, { filter: /Some Filter/ }) + .onMessage((event) => {}, { filter: 'Some Filter' }) + .onMessage((event) => {}, { filter: 'Some Filter', autoApply: true }) + .onMessage((event) => {}, { autoApply: false }); + +socket.close(true); +socket.close(); + +socket.send("Some great data here!").finally(() => {}); +socket.send({ list: [1, 2, 3, 4] }); diff --git a/angular-websocket/angular-websocket.d.ts b/angular-websocket/angular-websocket.d.ts new file mode 100644 index 0000000000..04859a7d16 --- /dev/null +++ b/angular-websocket/angular-websocket.d.ts @@ -0,0 +1,86 @@ +// Type definitions for angular-websocket v2.0 +// Project: https://github.com/AngularClass/angular-websocket +// Definitions by: Nick Veys +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare namespace angular.websocket { + + interface IWebSocketProvider { + /** + * Creates and opens an IWebSocket instance. + * + * @param url url to connect to + * @return websocket instance + */ + (url: string): IWebSocket; + } + + /** Options available to be specified for IWebSocket.onMessage */ + type IWebSocketMessageOptions = { + + /** + * If specified, only messages that match the filter will cause the message event + * to be fired. + */ + filter?: string | RegExp; + + /** If true, each message handled will safely call `$rootScope.$digest()`. */ + autoApply?: boolean; + } + + interface IWebSocket { + + /** + * Adds a callback to be executed each time a socket connection is opened for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onOpen(callback: (event: Event) => void): IWebSocket; + + /** + * Adds a callback to be executed each time a socket connection is closed for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onClose(callback: (event: CloseEvent) => void): IWebSocket; + + /** + * Adds a callback to be executed each time a socket connection is closed for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onError(callback: (event: Event) => void): IWebSocket; + + /** + * Adds a callback to be executed each time a socket connection has an error for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onMessage(callback: (event: MessageEvent) => void, options?: IWebSocketMessageOptions): IWebSocket; + + /** + * Closes the underlying socket, as long as no data is still being sent from the client. + * + * @param force if `true`, force close even if data is still being sent + * @returns this instance, for method chaining + */ + close(force?: boolean): IWebSocket; + + /** + * Adds data to a queue, and attempts to send if the socket is ready. + * + * @param data data to send, if this is an object, it will be stringified before sending + */ + send(data: string | {}): ng.IPromise; + } +}