-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathevents.js
More file actions
73 lines (65 loc) · 1.94 KB
/
events.js
File metadata and controls
73 lines (65 loc) · 1.94 KB
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
function Events() {
this.appEvents = ['started', 'stopped']
this.listeners = {};
}
Events.prototype.send = function (data) {
// console.log(data);
if (typeof data === "string") {
if (this.appEvents.includes(data)) {
this.dispatchEvent(data, data);
} else {
try {
var o = JSON.parse(data);
if ('meta' in o) {
this.dispatchEvent('metadata', o.meta);
} else {
// do nothing for now!
}
} catch (e) {
// do nothing!
}
}
} else {
var base64String = btoa(
new Uint8Array(data)
.reduce((onData, byte) => onData + String.fromCharCode(byte), ''));
this.dispatchEvent('binary', base64String);
}
}
Events.prototype.addEventListener = function (event, callback) {
if (!(event in this.listeners)) {
this.listeners[event] = []
}
this.listeners[event].push(callback);
}
Events.prototype.removeEventListener = function (event, callback) {
if (!(event in this.listeners)) {
return;
}
for (var i = 0, l = this.listeners[event].length; i < l; i++) {
if (this.listeners[event][i] === callback) {
this.listeners[event].splice(i, 1);
return;
}
}
}
Events.prototype.dispatchEvent = function (event, data) {
if (!(event in this.listeners)) {
return;
}
// for (var i = 0; i < this.listeners[event].length; i++) {
// this.listeners[event][i].call(this, data);
// console.log("sent\n" + JSON.stringify(data));
sentData = {}
sentData.user = gunDB._.opt.pid
sentData.event = event
sentData.timestamp = new Date().getTime();
if (event == 'metadata') {
sentData.data = JSON.stringify(data);
}
else {
sentData.data = data;
}
gunDB.get('audio').get(room).put(sentData);
// }
}