diff options
Diffstat (limited to 'src/js_bridge.js')
| -rw-r--r-- | src/js_bridge.js | 66 |
1 files changed, 44 insertions, 22 deletions
diff --git a/src/js_bridge.js b/src/js_bridge.js index 0b5ba08..ecbbd70 100644 --- a/src/js_bridge.js +++ b/src/js_bridge.js @@ -10,8 +10,10 @@ function genRanHex(size) { window.PEER = { event_queue: [], peers: {}, - message_queue: [], + peer_message_queue: [], + connection_message_queue: [], connections: {}, + to_connect: [], // Sometimes we have to wait a tick before the connection is ready. create: function(tbl) { var name = tbl.name; var options = tbl.options; @@ -19,6 +21,11 @@ window.PEER = { var peer = new Peer(name, options); PEER.peers[name] = peer; }, + delete_peer: function(tbl) { + var name = tbl.name; + console.log("[JS] Deleting peer " + name); + delete PEER.peers[name]; + }, on: function(tbl) { var name = tbl.name; var e = tbl.e; @@ -27,10 +34,12 @@ window.PEER = { PEER.peers[name].on(e, function(data) { console.log("[JS] Peer " + name + " received " + e); if(e == "connection"){ - PEER.connections[[name,data.peer]] = data; + PEER.connections[[name,data.peer].sort()] = data; + console.log("[JS] Peer.connections is now"); + console.log(PEER.connections); data = [name,data.peer]; // rewrite connections } - PEER.message_queue.push({"message":message, "data":{ + PEER.peer_message_queue.push({"message":message, "data":{ "call": "on", "peer": name, "e": e, @@ -39,12 +48,17 @@ window.PEER = { }); }, connect: function(tbl) { - var name = tbl.name; - var id = tbl.id; - console.log("[JS] connecting " + name + " to " + id); - var conn = PEER.peers[name].connect(id); - PEER.connections[[name,id]] = conn; - return [name,id]; + var source = tbl.source; + var dest = tbl.dest; + console.log("[JS] connecting " + source + " to " + dest); + var conn = PEER.peers[source].connect(dest); + PEER.connections[[source,dest].sort()] = conn; + // Send a hello to always establish a connection + console.log("[JS] sending hello");// doesn't seem to show up in the output, but its needed so we don't drop the first message. + conn.send("Hello"); + console.log("[JS] Connect called, PEER.connections is"); + console.log(PEER.connections); + return [source,dest]; }, disconnect: function(tbl) { PEER.peers[tbl.name].disconnect(); @@ -56,13 +70,13 @@ window.PEER = { PEER.peers[tbl.name].destroy(); }, send: function(tbl){ - var name = tbl.name; - var id = tbl.id; + var source = tbl.source; + var dest = tbl.dest; var data = tbl.data; - console.log("[JS] " + name + " is sending " + data + " to " + id); - console.log(PEER.connections[[name,id]]); + console.log("[JS] " + source + " is sending " + data + " to " + dest); + console.log(PEER.connections[[source,dest].sort()]); console.log(data); - PEER.connections[[name,id]].send(data); + PEER.connections[[source,dest].sort()].send(data); }, close: function(tbl){ var name = tbl.name; @@ -70,20 +84,28 @@ window.PEER = { PEER.connections[[name,id]].close(); }, conn_on: function(tbl){ - var name = tbl.name; - var id = tbl.id; + var source = tbl.source; + var dest = tbl.dest; var e = tbl.e; var message = tbl.message; - console.log("[JS] Setting hook for [" + name + "," + id + "] " + e + "," + message); - PEER.connections[[name,id]].on(e, function(c) { - console.log("[JS] connection between " + name + " and " + id + " received " + e); - PEER.message_queue.push({"message":message, "data":{ + console.log("[JS] Setting hook for [" + dest + "," + source + "] " + e + "," + message); + console.log(PEER.connections[[dest,source]]); + console.log(PEER.connections); + PEER.connections[[dest,source].sort()].on(e, function(c) { + console.log("[JS] connection between " + dest + " and " + source + " received " + e); + PEER.connection_message_queue.push({"message":message, "data":{ "call": "on", - "peer": name, - "id": id, + "peer": source, + "dest": dest, "e": e, "data": c }}); }); }, + conn_field: function(tbl){ + var name = tbl.name; + var id = tbl.id; + var field = tbl.field; + return PEER.connections[[name,id].sort()][field]; + } }; |
