/
index.js
65 lines (45 loc) · 1.39 KB
/
index.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
var PubNub = require('pubnub');
var pubnub;
var subscribedChannels = [];
/* Initializes PubNub with the user's keys */
exports.initialize = function (publishKey, subscribeKey, connectedCallback) {
console.log("Init");
pubnub = new PubNub({
publishKey: publishKey,
subscribeKey: subscribeKey
});
// Subscribe to at least one channel
subscribe('default');
pubnub.addListener({
status: function (statusEvent) {
if (statusEvent.category === "PNConnectedCategory") {
connectedCallback();
}
},
message: _handleMessage.bind(this)
})
}
function subscribe(channel, callback) {
var listener = { channel: channel, callback: callback };
subscribedChannels.push(listener);
pubnub.subscribe({
channels: subscribedChannels.map((val) => { return val.channel; })
});
}
function publish(message, channel, callback = null) {
var publishConfig = {
channel: channel,
message: message
}
pubnub.publish(publishConfig, callback);
}
function _handleMessage(message) {
var channel = message.channel;
// Get listener for channel
var listeners = subscribedChannels.filter((val) => { return val.channel == channel });
listeners.forEach((listener) => {
listener.callback(message);
})
}
exports.subscribe = subscribe;
exports.publish = publish;