-
Notifications
You must be signed in to change notification settings - Fork 237
/
client.js
69 lines (53 loc) · 1.44 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
(function ($) {
/**
* NodeKit client.
*/
var tc = termkit.client = function () {
var that = this;
// Keep track of sessions.
this.sessions = {};
// Set up event handlers.
this.onConnect = function () {};
this.onDisconnect = function () {};
// Open socket to back-end.
var s = this.socket = io.connect('http://localhost:2222', { });
// Use shared protocol handler with back-end.
this.protocol = new termkit.protocol(this.socket, this);
s.on('connect', function () {
// TODO: Handshake
that.onConnect();
});
s.on('disconnect', function() {
that.onDisconnect();
});
};
tc.prototype = {
add: function (session) {
this.sessions[session.id] = session;
},
remove: function (session) {
delete this.sessions[session.id];
},
dispatch: function (message) {
if (message.query) {
// client doesn't support queries.
return;
}
// must be regular viewstream message.
if (message.session) {
var session = this.sessions[message.session];
if (session) {
session.dispatch(message.method, message.args);
}
}
},
// Invoke a method on the server.
query: function (method, args, session, callback) {
this.protocol.query(method, args, { session: session }, callback);
},
// Send a notification message.
notify: function (method, args, session) {
this.protocol.notify(method, args, { session: session });
},
};
})(jQuery);