summaryrefslogtreecommitdiff
path: root/src/ws/proto.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/ws/proto.js')
-rw-r--r--src/ws/proto.js364
1 files changed, 198 insertions, 166 deletions
diff --git a/src/ws/proto.js b/src/ws/proto.js
index 5a71157..035408f 100644
--- a/src/ws/proto.js
+++ b/src/ws/proto.js
@@ -1,211 +1,243 @@
-/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set et sw=2 ts=2: */
function get_appropriate_ws_url()
{
- // From: https://gist.github.com/2428561
- var parser = document.createElement('a');
- parser.href = document.URL;
-
- // We open the websocket encrypted if this page came on an
- // https:// url itself, otherwise unencrypted
- if(parser.protocol == "http:") parser.protocol = "ws:";
- if(parser.protocol == "https:") parser.protocol = "wss:";
-
- return parser.href;
+ // From: https://gist.github.com/2428561
+ var parser = document.createElement('a');
+ parser.href = document.URL;
+
+ // We open the websocket encrypted if this page came on an
+ // https:// url itself, otherwise unencrypted
+ if(parser.protocol == "http:")
+ {
+ parser.protocol = "ws:";
+ }
+ if(parser.protocol == "https:")
+ {
+ parser.protocol = "wss:";
+ }
+
+ return parser.href;
}
var socket_node = new WebSocket(get_appropriate_ws_url(), "lws-node-protocol");
-try {
- socket_node.onopen = function() {
- var connectEvent = new CustomEvent("connectEvent", {
- detail: {
- time: new Date(),
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(connectEvent);
- }
-
- socket_node.onmessage = function got_packet(msg) {
- var messageEvent = new CustomEvent("messageEvent", {
- detail: {
- message: "recv [" + msg.data + "]",
- time: new Date(),
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(messageEvent);
-
- var msgs = new Array();
- var idx = 0;
- msgs[idx] = '';
- var c = 0;
- var instring = false;
- for(c = 0; c < msg.data.length; c++) {
- if(msg.data[c] == '"' && c > 0 && msg.data[c - 1] != '\\') instring = !instring;
- if(msg.data[c] == ';' && instring == false) {
- idx++;
- msgs[idx] = '';
- }
- if(msg.data[c] != ';' || instring == true) msgs[idx] += msg.data[c];
- }
-
- f = 0;
- while (f < msgs.length - 1) {
- var msg = new Array();
- instring = false;
- idx = 0;
-
- // Strip padding and trailing whitespace.
- var msgstr = msgs[f].replace(/^\s+||\s+$/g,'');
-
- if(msgstr == ';') {
- f++;
- continue;
- }
-
- msg[idx] = '';
- for(c = 0; c < msgstr.length; c++) {
- if(msgstr[c] == '"' && c > 0 && msgstr[c - 1] != '\\') {
- instring = !instring;
- continue;
- }
- if(msgstr[c] == ' ' && instring == false) {
- msg[idx] = msg[idx].replace("\\\\","\\").replace("\\\"","\"");
- idx++;
- msg[idx] = '';
- }
- if(msgstr[c] != ' ' || instring == true) msg[idx] += msgstr[c];
- }
-
- var subscribeid = msg[0];
- var cmd = msg[1];
- var id = msg[2];
-
- if(cmd == "remove") {
- var removeEvent = new CustomEvent("removeEvent", {
- detail: {
- subscribeid: subscribeid,
- id: id,
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(removeEvent);
- }
- else if(cmd == "move") {
- var moveEvent = new CustomEvent("moveEvent", {
- detail: {
- subscribeid: subscribeid,
- id: id,
- parentid: msg[3],
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(moveEvent);
- }
- else if(cmd == "create") {
- var createEvent = new CustomEvent("createEvent", {
- detail: {
- subscribeid: subscribeid,
- id: id,
- parentid: msg[3],
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(createEvent);
- }
- else if(cmd == "update") {
- var updateEvent = new CustomEvent("updateEvent", {
- detail: {
- subscribeid: subscribeid,
- id: id,
- name: msg[3],
- value: msg[4],
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(updateEvent);
- }
- f++;
- }
- }
-
- socket_node.onclose = function(){
- var disconnectEvent = new CustomEvent("disconnectEvent", {
- detail: {
- time: new Date(),
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(disconnectEvent);
- }
-} catch(exception) {
- alert('<p>Error' + exception + '</p>');
+try
+{
+ socket_node.onopen = function()
+ {
+ var connectEvent = new CustomEvent("connectEvent",
+ {
+ detail: {
+ time: new Date(),
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(connectEvent);
+ };
+
+ socket_node.onmessage = function got_packet(msg)
+ {
+ var messageEvent = new CustomEvent("messageEvent",
+ {
+ detail: {
+ message: "recv [" + msg.data + "]",
+ time: new Date(),
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(messageEvent);
+
+ var msgs = new Array();
+ var idx = 0;
+ msgs[idx] = '';
+ var c = 0;
+ var instring = false;
+ for(c = 0; c < msg.data.length; c++)
+ {
+ if(msg.data[c] == '"' && c > 0 && msg.data[c - 1] != '\\')
+ {
+ instring = !instring;
+ }
+ if(msg.data[c] == ';' && instring == false)
+ {
+ idx++;
+ msgs[idx] = '';
+ }
+ if(msg.data[c] != ';' || instring == true)
+ {
+ msgs[idx] += msg.data[c];
+ }
+ }
+
+ f = 0;
+ while (f < msgs.length - 1)
+ {
+ var msg = new Array();
+ instring = false;
+ idx = 0;
+
+ // Strip padding and trailing whitespace.
+ var msgstr = msgs[f].replace(/^\s+||\s+$/g,'');
+
+ if(msgstr == ';')
+ {
+ f++;
+ continue;
+ }
+
+ msg[idx] = '';
+ for(c = 0; c < msgstr.length; c++)
+ {
+ if(msgstr[c] == '"' && c > 0 && msgstr[c - 1] != '\\') {
+ instring = !instring;
+ continue;
+ }
+ if(msgstr[c] == ' ' && instring == false) {
+ msg[idx] = msg[idx].replace("\\\\","\\").replace("\\\"","\"");
+ idx++;
+ msg[idx] = '';
+ }
+ if(msgstr[c] != ' ' || instring == true) msg[idx] += msgstr[c];
+ }
+
+ var subscribeid = msg[0];
+ var cmd = msg[1];
+ var id = msg[2];
+
+ if(cmd == "remove")
+ {
+ var removeEvent = new CustomEvent("removeEvent",
+ {
+ detail: {
+ subscribeid: subscribeid,
+ id: id,
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(removeEvent);
+ }
+ else if(cmd == "move")
+ {
+ var moveEvent = new CustomEvent("moveEvent",
+ {
+ detail: {
+ subscribeid: subscribeid,
+ id: id,
+ parentid: msg[3],
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(moveEvent);
+ }
+ else if(cmd == "create")
+ {
+ var createEvent = new CustomEvent("createEvent",
+ {
+ detail: {
+ subscribeid: subscribeid,
+ id: id,
+ parentid: msg[3],
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(createEvent);
+ }
+ else if(cmd == "update")
+ {
+ var updateEvent = new CustomEvent("updateEvent",
+ {
+ detail: {
+ subscribeid: subscribeid,
+ id: id,
+ name: msg[3],
+ value: msg[4],
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(updateEvent);
+ }
+ f++;
+ }
+ };
+
+ socket_node.onclose = function(){
+ var disconnectEvent = new CustomEvent("disconnectEvent",
+ {
+ detail: {
+ time: new Date(),
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(disconnectEvent);
+ };
+}
+catch(exception)
+{
+ alert('<p>Error' + exception + '</p>');
}
function transmit(msg)
{
- //LogEvent(msg);
- var messageEvent = new CustomEvent("messageEvent", {
- detail: {
- message: "send [" + msg + "]",
- time: new Date(),
- },
- bubbles: true,
- cancelable: true
- });
- document.dispatchEvent(messageEvent);
-
- socket_node.send(msg);
+ //LogEvent(msg);
+ var messageEvent = new CustomEvent("messageEvent",
+ {
+ detail: {
+ message: "send [" + msg + "]",
+ time: new Date(),
+ },
+ bubbles: true,
+ cancelable: true
+ });
+ document.dispatchEvent(messageEvent);
+
+ socket_node.send(msg);
}
function login(user, password)
{
- transmit("login "+user+" "+password);
+ transmit("login "+user+" "+password);
}
function logout()
{
- transmit("logout");
+ transmit("logout");
}
function subscribe(id)
{
- transmit("subscribe "+id);
+ transmit("subscribe "+id);
}
function unsubscribe(id)
{
- transmit("unsubscribe "+id);
+ transmit("unsubscribe "+id);
}
function create(id, parent)
{
- transmit("create "+id+" "+parent);
+ transmit("create "+id+" "+parent);
}
function remove(id)
{
- transmit("remove "+id);
+ transmit("remove "+id);
}
function update(id, name, value)
{
- transmit("update "+id+" "+name+" "+value);
+ transmit("update "+id+" "+name+" "+value);
}
function move(id, parent)
{
- transmit("move "+id+" "+parent);
+ transmit("move "+id+" "+parent);
}
-
-