-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
76 lines (62 loc) · 1.26 KB
/
test.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
let ws = new WebSocket("ws://localhost:10209")
ws.onopen = () => {
ws.onmessage = (evt) => {
let msg = {}
try {
msg = JSON.parse(evt.data);
} catch (ex) {
console.warn(ex);
return;
}
if (msg.Type === undefined || msg.Id === undefined) {
console.warn("msg.Type or msg.Id missing:", msg);
return;
}
console.log(msg);
let cb = cbs.get(msg.Id);
if (cb) {
cb(msg);
cbs.delete(msg.Id);
}
}
let cbs = new Map();
let sendJson = (obj) => ws.send(JSON.stringify(obj));
let sendReq = (type, rmsg, cb)=> {
const Id = `${type}:${cbs.size}:${Math.floor(Math.random()*Number.MAX_SAFE_INTEGER)}`;
if (cb) {
cbs.set(Id, cb);
}
sendJson({
Id,
Type: type,
Msg: rmsg
})
};
//create a schema
const schemaId = "test";
sendReq("schema-set", {
SchemaId: schemaId,
Schema: {
Fields: {
A: 1,
B: 1
}
}
})
sendReq("inst", {
SchemaId: schemaId
}, (msg)=>{
const InstanceId = msg.Msg.InstanceId;
// subscribe to an instance by id
sendReq("sub", {
Id: InstanceId
});
//send a mutation
sendReq("mut", {
Id: InstanceId,
Change: {
A: 40
}
});
});
}