diff options
author | Fabio Berger <me@fabioberger.com> | 2018-08-23 06:46:45 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-08-23 06:46:45 +0800 |
commit | 61255309d2f7e2724d29f58f1c1493a1a87a182c (patch) | |
tree | 33eabfcf58f782fa2ccb070e05a6cd711af2ab29 /packages/connect/src/orders_channel_factory.ts | |
parent | 27d329ff2559c643b54489d0796bb2c2fcda264f (diff) | |
parent | cb19623a3aaf22a386bd4a7d6477048a604be9a2 (diff) | |
download | dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.gz dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.bz2 dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.lz dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.xz dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.tar.zst dexon-sol-tools-61255309d2f7e2724d29f58f1c1493a1a87a182c.zip |
merge development
Diffstat (limited to 'packages/connect/src/orders_channel_factory.ts')
-rw-r--r-- | packages/connect/src/orders_channel_factory.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/connect/src/orders_channel_factory.ts b/packages/connect/src/orders_channel_factory.ts new file mode 100644 index 000000000..5986d2a77 --- /dev/null +++ b/packages/connect/src/orders_channel_factory.ts @@ -0,0 +1,29 @@ +import * as WebSocket from 'websocket'; + +import { OrdersChannel, OrdersChannelHandler } from './types'; +import { assert } from './utils/assert'; +import { WebSocketOrdersChannel } from './ws_orders_channel'; + +export const ordersChannelFactory = { + /** + * Instantiates a new WebSocketOrdersChannel instance + * @param url The relayer API base WS url you would like to interact with + * @param handler An OrdersChannelHandler instance that responds to various + * channel updates + * @return An OrdersChannel Promise + */ + async createWebSocketOrdersChannelAsync(url: string, handler: OrdersChannelHandler): Promise<OrdersChannel> { + assert.isUri('url', url); + assert.isOrdersChannelHandler('handler', handler); + return new Promise<OrdersChannel>((resolve, reject) => { + const client = new WebSocket.w3cwebsocket(url); + client.onopen = () => { + const ordersChannel = new WebSocketOrdersChannel(client, handler); + resolve(ordersChannel); + }; + client.onerror = err => { + reject(err); + }; + }); + }, +}; |