user 6 rokov pred
rodič
commit
cb22cffc33
7 zmenil súbory, kde vykonal 96 pridanie a 99 odobranie
  1. 1 1
      lib/index.d.ts
  2. 15 19
      lib/index.js
  3. 1 1
      lib/index.js.map
  4. 14 12
      lib/sample.js
  5. 1 1
      lib/sample.js.map
  6. 49 50
      src/index.ts
  7. 15 15
      src/sample.ts

+ 1 - 1
lib/index.d.ts

@@ -26,7 +26,7 @@ export declare class BankClient {
     uploadSlimText(item: string): Promise<any>;
     appendBank(bankAddress: string, bankTopic: string, itemHash: string): Promise<void>;
     retrievePrivate(peerAddr: string, topic: string): Promise<string>;
-    subscribePrivate(peerAddr: string, topic: string, callback: () => void): Promise<void>;
+    subscribePrivate(peerAddr: string, topic: string, connectCallback: () => void, messageCallback: (data: any) => void): Promise<void>;
     appendPrivate(peerAddr: string, topic: string, hash?: string, replaceHash?: string, deleteHash?: string): Promise<void>;
     getOrCreateContact(peerId: string, contactAddr: string): Promise<any>;
     getContactById(peerId: string, contactId: string): Promise<any>;

+ 15 - 19
lib/index.js

@@ -219,9 +219,9 @@ class BankClient {
             return result;
         });
     }
-    subscribePrivate(peerAddr, topic, callback) {
+    subscribePrivate(peerAddr, topic, connectCallback, messageCallback) {
         return __awaiter(this, void 0, void 0, function* () {
-            yield this.connectWebsocket(peerAddr, topic, callback);
+            yield this.connectWebsocket(peerAddr, topic, connectCallback, messageCallback);
         });
     }
     appendPrivate(peerAddr, topic, hash, replaceHash, deleteHash) {
@@ -300,8 +300,9 @@ class BankClient {
             return new content_item_1.ContentItem(hash, contentParams);
         });
     }
-    connectWebsocket(peerAddr, topic, callback) {
+    connectWebsocket(peerAddr, topic, connectCallback, messageCallback) {
         return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
+            console.log('trying to connect');
             const nonce = yield this.getNonce();
             const retrieveRequest = yield this.makePlaintextPayload(JSON.stringify({
                 _date: new Date().toISOString(),
@@ -318,36 +319,31 @@ class BankClient {
                     'x-sig': retrieveRequest.sig
                 }
             });
-            ws.on('open', (param) => {
-                console.log('opened ws', param);
-                resolve();
+            ws.on('open', () => {
+                connectCallback();
             });
             ws.on('message', data => {
-                // console.log('ws message', data);
-                callback();
+                messageCallback(data);
             });
-            ws.on('error', err => {
+            const reconnect = () => {
+                console.log('reconnect');
                 try {
                     ws.terminate();
                 }
                 finally {
                     console.log('reconnecting in 5s');
                     setTimeout(() => {
-                        this.connectWebsocket(peerAddr, topic, callback);
+                        this.connectWebsocket(peerAddr, topic, connectCallback, messageCallback);
                     }, 5000);
                 }
+            };
+            ws.on('error', err => {
+                console.error('websocket error', err);
             });
             ws.on('close', err => {
-                try {
-                    ws.terminate();
-                }
-                finally {
-                    console.log('reconnecting in 5s');
-                    setTimeout(() => {
-                        this.connectWebsocket(peerAddr, topic, callback);
-                    }, 5000);
-                }
+                reconnect();
             });
+            resolve();
         }));
     }
     getItemsForCommaList(commaList) {

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
lib/index.js.map


+ 14 - 12
lib/sample.js

@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 const index_1 = require("./index");
-const host = 'http://127.0.0.1:8082';
+const host = 'https://distributing.fun';
 const bankClient = new index_1.BankClient(host, 'https://distributing.fun');
 (() => __awaiter(this, void 0, void 0, function* () {
     yield bankClient.bootstrap();
@@ -42,21 +42,23 @@ const bankClient = new index_1.BankClient(host, 'https://distributing.fun');
     // console.log('updated', updatedContact);
     console.log('subscribing');
     yield bankClient.subscribePrivate('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤', () => {
+        console.log('successfully connected to websocket');
+    }, (msg) => {
         console.log('got a notify of an outbox item');
     });
     console.log('subscribed');
     const starting = yield bankClient.retrievePrivate('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤');
-    console.log('starting', starting);
-    setTimeout(() => __awaiter(this, void 0, void 0, function* () {
-        const uploadResult = yield bankClient.upload({
-            type: 'file',
-            text: 'txt',
-            title: 'New random entry in outbox'
-        });
-        console.log('upl', uploadResult);
-        yield bankClient.appendBank('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤', uploadResult);
-        console.log('added.');
-    }), 10000);
+    console.log('inbox contents', starting);
+    // setTimeout(async () => {
+    // const uploadResult = await bankClient.upload({
+    //     type: 'file',
+    //     text: 'txt',
+    //     title: 'New random entry in outbox'
+    // });
+    // console.log('upl', uploadResult);
+    // await bankClient.appendBank('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤', uploadResult);
+    // console.log('added.');
+    // }, 10000);
     setTimeout(() => {
         console.log('done');
     }, 20000);

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
lib/sample.js.map


+ 49 - 50
src/index.ts

@@ -213,8 +213,8 @@ export class BankClient {
       return result;
     }
 
-    public async subscribePrivate(peerAddr: string, topic: string, callback: () => void) {
-      await this.connectWebsocket(peerAddr, topic, callback);
+    public async subscribePrivate(peerAddr: string, topic: string, connectCallback: () => void, messageCallback: (data: any) => void) {
+      await this.connectWebsocket(peerAddr, topic, connectCallback, messageCallback);
     }
 
     public async appendPrivate(peerAddr: string, topic: string, hash?: string, replaceHash?: string, deleteHash?: string) {
@@ -288,58 +288,57 @@ export class BankClient {
       return new ContentItem(hash, contentParams);
     }
 
-    private connectWebsocket(peerAddr: string, topic: string, callback: () => void) {
-      return new Promise(async (resolve, reject) => {
-        const nonce = await this.getNonce();
-        const retrieveRequest: any = await this.makePlaintextPayload(JSON.stringify({
-          _date: new Date().toISOString(),
-          _nonce: nonce,
-          addr: peerAddr,
-          topic: topic
-        }));
-
-        const arg = encodeURIComponent(Buffer.from(JSON.stringify(retrieveRequest)).toString('base64'));
-        const ws = new WebSocket(this.wsUrlBase + '/bank/ws?arg=' + arg, {
-          headers: {
-            'x-msg': retrieveRequest.msg,
-            'x-pub': retrieveRequest.pub,
-            'x-pubhash': retrieveRequest.pubHash,
-            'x-sig': retrieveRequest.sig
-          }
-        });
+  private connectWebsocket(peerAddr: string, topic: string, connectCallback: () => void, messageCallback: (data: any) => void) {
+    return new Promise(async (resolve, reject) => {
+      console.log('trying to connect');
+      const nonce = await this.getNonce();
+      const retrieveRequest: any = await this.makePlaintextPayload(JSON.stringify({
+        _date: new Date().toISOString(),
+        _nonce: nonce,
+        addr: peerAddr,
+        topic: topic
+      }));
 
-        ws.on('open', (param: any) => {
-          console.log('opened ws', param);
-          resolve();
-        });
+      const arg = encodeURIComponent(Buffer.from(JSON.stringify(retrieveRequest)).toString('base64'));
+      const ws = new WebSocket(this.wsUrlBase + '/bank/ws?arg=' + arg, {
+        headers: {
+          'x-msg': retrieveRequest.msg,
+          'x-pub': retrieveRequest.pub,
+          'x-pubhash': retrieveRequest.pubHash,
+          'x-sig': retrieveRequest.sig
+        }
+      });
+      
+      ws.on('open', () => {
+        connectCallback();
+      });
 
-        ws.on('message', data => {
-          // console.log('ws message', data);
-          callback();
-        });
+      ws.on('message', data => {
+        messageCallback(data);
+      });
 
-        ws.on('error', err => {
-          try {
-            ws.terminate();
-          } finally {
-            console.log('reconnecting in 5s');
-            setTimeout(() => {
-              this.connectWebsocket(peerAddr, topic, callback);
-            }, 5000);
-          }
-        });
-        ws.on('close', err => {
-          try {
-            ws.terminate();
-          } finally {
-            console.log('reconnecting in 5s');
-            setTimeout(() => {
-              this.connectWebsocket(peerAddr, topic, callback);
-            }, 5000);
-          }
-        });
+      const reconnect = () => {
+        console.log('reconnect');
+        try {
+          ws.terminate();
+        } finally {
+          console.log('reconnecting in 5s');
+          setTimeout(() => {
+            this.connectWebsocket(peerAddr, topic, connectCallback, messageCallback);
+          }, 5000);
+        }
+      };
+      ws.on('error', err => {
+        console.error('websocket error', err);
       });
-    }
+      ws.on('close', err => {
+        reconnect();
+      });
+
+      resolve();
+    });
+    
+  }
 
     private async getItemsForCommaList(commaList: string): Promise<any[]> {
       const itemHashes = commaList.split(',').filter(x => x.trim() !== '');

+ 15 - 15
src/sample.ts

@@ -1,5 +1,6 @@
 import { BankClient } from './index';
-const host = 'http://127.0.0.1:8082';
+const host = 'https://distributing.fun';
+
 const bankClient = new BankClient(host, 'https://distributing.fun');
 
 (async () => {
@@ -33,26 +34,25 @@ const bankClient = new BankClient(host, 'https://distributing.fun');
     // console.log('updated', updatedContact);
     console.log('subscribing');
     await bankClient.subscribePrivate('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤', () => {
+        console.log('successfully connected to websocket');
+    }, (msg: any) => {
         console.log('got a notify of an outbox item');
     });
     console.log('subscribed');
 
     const starting = await bankClient.retrievePrivate('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤');
-    console.log('starting', starting);
-
-
+    console.log('inbox contents', starting);
 
-
-    setTimeout(async () => {
-    const uploadResult = await bankClient.upload({
-        type: 'file',
-        text: 'txt',
-        title: 'New random entry in outbox'
-    });
-    console.log('upl', uploadResult);
-    await bankClient.appendBank('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤', uploadResult);
-    console.log('added.');
-    }, 10000);
+    // setTimeout(async () => {
+    // const uploadResult = await bankClient.upload({
+    //     type: 'file',
+    //     text: 'txt',
+    //     title: 'New random entry in outbox'
+    // });
+    // console.log('upl', uploadResult);
+    // await bankClient.appendBank('QmXRkCwxqecBMXs4DQucS9w85pW16i26tdKcZHExt9z8s5', '📤', uploadResult);
+    // console.log('added.');
+    // }, 10000);
     
     setTimeout(() => {
         console.log('done');