-
Notifications
You must be signed in to change notification settings - Fork 0
/
Client.js
89 lines (76 loc) · 1.93 KB
/
Client.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
'use strict';
const WebSocket = require('ws');
class Client {
constructor(serverUrl, key) {
//TODO: URL validation
this.serverUrl = serverUrl;
this.ws = undefined;
this.key = key;
this.opened = false;
}
connect() {
if (this.ws === undefined) {
this.ws = new WebSocket(this.serverUrl, {key: this.key});
console.log("new connection!");
return this.ws;
}
else {
console.log("else statement");
return this.ws;
}
}
sendMessageToServer(data){
if (this.opened) {
console.log("already opened");
this.ws.send(JSON.stringify(data));
}
else {
console.log("ahhhh");
this.ws.on('open', function open() {
this.send(JSON.stringify(data));
});
}
}
open() {
let myWS = this;
this.ws.on('open', function open(openevent) {
myWS.opened = true;
console.log('opened');
console.log(openevent);
});
}
logResponseEvents(){
this.ws.on('message', function incoming(data, flags) {
console.log(data);
});
}
close() {
if (this.ws !== undefined) {
this.ws.close();
this.ws = undefined;
}
}
}
module.exports = Client;
// var myRippledClient = new Client('wss://s1.ripple.com:443');
// myRippledClient.connect();
// const closedLedgerData = {
// "id": "Example watch for new validated ledgers",
// "command": "subscribe",
// "streams": ["ledger"]
// };
// myRippledClient.subscribeToEvents(closedLedgerData);
// myRippledClient.listenEvents();
//
// function sleep (time) {
// return new Promise((resolve) => setTimeout(resolve, time));
// }
// let myClient = new Client('ws://localhost:8080', 'Christopher');
// myClient.connect();
// myClient.open();
// myClient.logResponseEvents();
// myClient.sendMessageToServer("test data");
// sleep(500).then(() => {
// console.log("sleeped");
// myClient.sendMessageToServer("second slow message wow");
// });