summaryrefslogtreecommitdiff
path: root/webcards/scripts/client/sock.js
diff options
context:
space:
mode:
Diffstat (limited to 'webcards/scripts/client/sock.js')
-rw-r--r--webcards/scripts/client/sock.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/webcards/scripts/client/sock.js b/webcards/scripts/client/sock.js
new file mode 100644
index 0000000..78c4195
--- /dev/null
+++ b/webcards/scripts/client/sock.js
@@ -0,0 +1,52 @@
+function SockWorker(serveraddr, version, callback) {
+ this.server = serveraddr;
+ this.version = version;
+ this.cb = callback;
+}
+
+SockWorker.prototype = {
+ init: function() {
+ if(this.server == "" || this.server == null) {
+ return;
+ }
+ try {
+ this.socket = new WebSocket(this.server);
+
+ this.socket.addEventListener("open", this.o.bind(this));
+ this.socket.addEventListener("message", this.msg.bind(this));
+
+ this.socket.addEventListener("closed", this.c.bind(this));
+ this.socket.addEventListener("error", this.err.bind(this));
+ } catch (e) {
+ this.err();
+ }
+ },
+
+ o: function() {
+ this.send("version", this.version);
+ },
+
+ msg: function(e) {
+ if(typeof e.data == "string") {
+ var dat = JSON.parse(e.data)
+ this.cb(dat);
+ }
+ },
+
+ c: function() {
+ this.cb({type: "close", data: ""});
+ },
+
+ err: function() {
+ this.cb({type: "error", data: ""});
+ },
+
+ close: function() {
+ this.socket.close();
+ },
+
+ send: function(type, data) {
+ var m = new Message(type, data);
+ this.socket.send(m.stringify())
+ }
+}; \ No newline at end of file