-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreactosock.js
More file actions
88 lines (85 loc) · 2.4 KB
/
Copy pathreactosock.js
File metadata and controls
88 lines (85 loc) · 2.4 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import Connection from "./connection";
export default class Reactosock {
constructor(host, endpoint) {
this.conn = new Connection(host, endpoint);
}
// Connection setup
open(fn) {
if (this.conn.ready()) {
fn();
} else {
this.conn.on('open', fn);
}
}
close(fn) {
this.conn.on("close", fn);
}
ready(fn) {
if (this.conn.ready()) {
fn();
} else {
this.conn.on('ready', fn);
}
}
onChannelMessage(fn) {
this.conn.eventHandler("channelMessage", fn);
}
send(data) {
// Send data
return this.conn.connection.socket.send(data);
}
sendJSON(data) {
return this.send(JSON.stringify(data));
}
callRouter(verb, route, args, success, failure, channel) {
// Call router
let callbackName = this.conn.eventHandler.getCallbackName();
if (channel !== null) {
args = args || {};
args.channel = channel;
}
// Register the event
this.conn.eventHandler.on(callbackName, function (context, data) {
if (context.state == 'success') {
if (success) { success(context, data); }
}
if (context.state == 'error') {
if (failure) { failure(context, data); }
}
});
this.sendJSON({
route: route,
verb: verb,
args: args,
callbackname: callbackName
});
}
subscribe(route, channel, args, success, failure) {
return this.callRouter('subscribe', route, args, success, failure, channel);
}
unsubscribe(route, channel, args, success, failure) {
return this.callRouter('unsubscribe', route, args, success, failure, channel);
}
// Get object/s
getSingle(route, data, success, failure) {
this.callRouter('get_single', route, data, success, failure, null);
}
getList(route, data, success, failure) {
this.callRouter('get_list', route, data, success, failure, null);
}
getPagedList(route, data, page, success, failure) {
page = page || 1;
data['_page'] = page;
this.callRouter('get_list', route, data, success, failure, null);
}
// Create / update / delete
create(route, data, success, failure) {
this.callRouter('create', route, data, success, failure, null)
}
update(route, data, success, failure) {
this.callRouter('update', route, data, success, failure, null)
}
delete(route, data, success, failure) {
swampdragon.callRouter('delete', route, data, success, failure, null)
}
}