-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathClientSocket.js
43 lines (40 loc) · 1.11 KB
/
ClientSocket.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
var ClientSocket = function (socket) {
this.registeredEventHandlers = {};
this.socket = socket;
var self = this;
this.socket.on('message', function (message) {
var parsedMessage = JSON.parse(message);
var eventName = parsedMessage['event'];
var payload = parsedMessage['payload'];
var eventHandler = self.registeredEventHandlers[eventName];
if (eventHandler !== undefined) {
eventHandler(payload);
}
else {
console.error("Uncaught event: %s", eventName);
}
})
};
ClientSocket.prototype.on = function (eventName, eventHandler) {
if (eventName === 'close') {
this.socket.on('close', eventHandler);
}
else if (eventName === 'error') {
this.socket.on('error', eventHandler);
}
else if (eventName === 'message') {
this.socket.on('message', eventHandler);
}
else {
this.registeredEventHandlers[eventName] = function (payload) {
return eventHandler(payload);
};
}
};
ClientSocket.prototype.emit = function (eventName, payload) {
this.socket.send(JSON.stringify({
event: eventName,
payload: payload
}));
};
module.exports = ClientSocket;