diff --git a/wampy/wampy-tests.ts b/wampy/wampy-tests.ts new file mode 100644 index 000000000..f7dcf9fe5 --- /dev/null +++ b/wampy/wampy-tests.ts @@ -0,0 +1,119 @@ +/// +/// + +import Wampy from 'wampy'; + +var ws = new Wampy('http://wamp.router.url', {realm: 'WAMPRealm'}); + +ws.options(); + +ws.options({ + reconnectInterval: 1000, + maxRetries: 999, + onConnect: function () { console.log('Yahoo! We are online!'); }, + onClose: function () { console.log('See you next time!'); }, + onError: function () { console.log('Breakdown happened'); }, + onReconnect: function () { console.log('Reconnecting...'); } +}); + +ws.connect(); +ws.connect('/my-socket-path'); +ws.connect('wss://socket.server.com:5000/ws'); +var id: number = ws.getSessionId(); +ws.disconnect(); +ws.abort(); + +ws.subscribe('system.monitor.update', function (data) { + console.log('Received system.monitor.update event!'); + }) + .subscribe('client.message', function (data) { + console.log('Received client.message event!'); + }); + +var f1 = function () { console.log('Subscribe processing!'); }; +ws.unsubscribe('subscribed.topic', f1); + +ws.unsubscribe('chat.message.received'); + +ws.call('get.server.time', null, { + onSuccess: function (stime) { + console.log('RPC successfully called'); + console.log('Server time is ' + stime); + }, + onError: function (err) { + console.log('RPC call failed with error ' + err); + } +}); + +ws.publish('system.monitor.update'); +ws.getOpStatus(); + +ws.publish('user.logged.in'); +ws.publish('chat.message.received', 'user message'); +ws.publish('chat.message.received', ['user message1', 'user message2']); +ws.publish('user.modified', { field1: 'field1', field2: true, field3: 123 }); +ws.publish('user.modified', { field1: 'field1', field2: true, field3: 123 }, { + onSuccess: function () { console.log('User successfully modified'); } +}); +ws.publish('user.modified', { field1: 'field1', field2: true, field3: 123 }, { + onSuccess: function () { console.log('User successfully modified'); }, + onError: function (err) { console.log('User modification failed', err); } +}); +ws.publish('chat.message.received', ['Private message'], null, { eligible: 123456789 }); + +ws.call('server.time', null, function (data) { console.log('Server time is ' + data[0]); }); + +ws.call('start.migration', null, { + onSuccess: function (data) { + console.log('RPC successfully called'); + }, + onError: function (err) { + console.log('RPC call failed!',err); + } +}); + +ws.call('restore.backup', { backupFile: 'backup.zip' }, { + onSuccess: function (data) { + console.log('Backup successfully restored'); + }, + onError: function (err) { + console.log('Restore failed!',err); + } +}); + +ws.call('start.migration', null, { + onSuccess: function (data) { + console.log('RPC successfully called'); + }, + onError: function (err) { + console.log('RPC call failed!',err); + } +}); +var status = ws.getOpStatus(); + +ws.cancel(status.reqId); + +var sqrt_f = function (x: number) { return x*x; }; + +ws.register('sqrt.value', sqrt_f); + +ws.register('sqrt.value', { + rpc: sqrt_f, + onSuccess: function (data) { + console.log('RPC successfully registered'); + }, + onError: function (err) { + console.log('RPC registration failed!',err); + } +}); + +ws.unregister('sqrt.value'); + +ws.unregister('sqrt.value', { + onSuccess: function (data) { + console.log('RPC successfully unregistered'); + }, + onError: function (err) { + console.log('RPC unregistration failed!',err); + } +}); diff --git a/wampy/wampy.d.ts b/wampy/wampy.d.ts new file mode 100644 index 000000000..650a8a91a --- /dev/null +++ b/wampy/wampy.d.ts @@ -0,0 +1,93 @@ +// Type definitions for wampy.js v2.0.1 +// Project: https://github.com/KSDaemon/wampy.js +// Definitions by: Konstantin Burkalev +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare module "wampy" { + + interface WampyOptions { + autoReconnect?: boolean; + reconnectInterval?: number; + maxRetries?: number; + transportEncoding?: string; + realm?: string; + helloCustomDetails?: any; + onConnect?: () => void; + onClose?: () => void; + onError?: () => void; + onReconnect?: () => void; + ws?: any; + msgpackCoder?: any; + } + + interface WampyOpStatus { + code: number; + description: string; + reqId?: number; + } + + interface SuccessErrorCallbacksHash { + onSuccess?: (data: any) => void; + onError?: (err: string) => void; + } + + interface SubscribeCallbacksHash extends SuccessErrorCallbacksHash { + onEvent: (data: any) => void; + } + + interface RegisterCallbacksHash extends SuccessErrorCallbacksHash { + rpc: (data: any) => any; + } + + interface CallSuccessErrorCallbacksHash { + onSuccess: (data: any) => any; + onError?: (err: string) => void; + } + + interface AdvancedOptions { + exclude?: number | number[]; + eligible?: number | number[]; + exclude_me?: boolean; + disclose_me?: boolean; + } + + interface CallAdvancedOptions extends AdvancedOptions { + receive_progress?: boolean; + } + + interface CancelAdvancedOptions { + mode?: "skip" | "kill" | "killnowait"; + } + + interface Wampy { + options(opts?: WampyOptions): WampyOptions | Wampy; + getOpStatus(): WampyOpStatus; + getSessionId(): number; + connect(url?: string): Wampy; + disconnect(): Wampy; + abort(): Wampy; + subscribe(topicURI: string, callbacks: (((data: any) => void) | SubscribeCallbacksHash)): Wampy; + unsubscribe(topicURI: string, callbacks?: (((data: any) => void) | SubscribeCallbacksHash)): Wampy; + publish(topicURI: string, + payload?: any, + callbacks?: SuccessErrorCallbacksHash, + advancedOptions?: AdvancedOptions): Wampy; + call(topicURI: string, + payload?: any, + callbacks?: (((data: any) => void) | CallSuccessErrorCallbacksHash), + advancedOptions?: CallAdvancedOptions): Wampy; + cancel(reqId: number, + callbacks?: ((() => void) | SuccessErrorCallbacksHash), + advancedOptions?: CancelAdvancedOptions): Wampy; + register(topicURI: string, callbacks: (((data: any) => any) | RegisterCallbacksHash)): Wampy; + unregister(topicURI: string, callbacks?: ((() => void) | SuccessErrorCallbacksHash)): Wampy; + } + + interface WampyInstance { + new(url?: string, options?: WampyOptions): Wampy; + } + + var wampy: WampyInstance; + + export default wampy; +}