2014-11-25 15:51:45 +00:00

1 line
8.9 KiB
Plaintext

{"version":3,"sources":["peerjs-connector.coffee"],"names":[],"mappings":"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","file":"peerjs-connector.js","sourceRoot":"/source/","sourcesContent":["\nwindow.PeerJsConnector = class PeerJsConnector\n \n constructor: (@id, options)->\n that = this\n @isConnected = false\n @computeWhenConnected = []\n @connections = {}\n @unsynced_connections = {}\n @receive_handlers = []\n @conn = new Peer arguments[0], arguments[1]\n @conn.on 'error', (err)->\n throw new Error \"Peerjs connector: #{err}\"\n @conn.on 'disconnected', ()->\n throw new Error \"Peerjs connector disconnected from signalling server. Cannot accept new connections. Not fatal, but not so good either..\"\n @conn.on 'disconnect', ()->\n that.conn.reconnect()\n @conn.on 'connection', @_addConnection\n # send all connection ids\n exchangeConnections = ()->\n conns = for peerid,peer of that.connections \n peerid\n conns\n joinConnections = (peers)->\n for peer in peers\n if not @unsynced_connections[peer.peer]?\n @unsynced_connections[peer.peer] = peer\n that.join peer\n true \n @syncProcessOrder = [exchangeConnections, joinConnections]\n \n \n #\n # Execute an function _when_ we are connected. If not connected, wait until connected.\n # @param f {Function} Will be executed on the PeerJs-Connector context. No parameters.\n #\n whenConnected: (f)->\n if @isConnected\n f.call this\n else\n @computeWhenConnected.push f\n \n #\n # Execute an function _when_ a message is received.\n # @param f {Function} Will be executed on the PeerJs-Connector context. f will be called with (sender_id, broadcast {true|false}, message).\n #\n whenReceiving: (f)->\n @receive_handlers.push f\n \n #\n # Send a message to a (sub)-set of peers. \n # @param peers {Array<connection_ids>} A set of ids.\n # @param message {Object} The message to send.\n #\n send: (peers, message)->\n @whenConnected ()=>\n for peer in peers\n @connections[peer].send message\n \n # \n # Broadcast a message to all connected peers.\n # @param message {Object} The message to broadcast.\n # \n broadcast: (message)->\n @whenConnected ()=>\n for peerid,peer of @connections\n peer.send message\n \n \n #\n # Define how you want to handle the sync process of two users.\n # This is a synchronous handshake. Every user will perform exactly the same actions at the same time. E.g.\n # @example\n # whenSyncing(function(){ // first call must not have parameters!\n # return this.id; // Send the id of this connector.\n # },function(peerid){ // you receive the peerid of the other connections.\n # // you can do something with the peerid\n # // return \"you are my friend\"; // you could send another massage.\n # }); // this is the end of the sync process.\n #\n whenSyncing: ()->\n for f in arguments \n @syncProcessOrder.push f\n \n #\n # Join a communication room. In case of peerjs, you just have to join to one other client. This connector will join to the other peers automatically.\n # @param id {String} The connection id of another client.\n #\n join: (peerid)->\n if not @connections[peerid]? and peerid isnt @id\n peer = @conn.connect peerid, {reliable: true} \n @_addConnection peer\n true\n else\n false\n \n _addConnection: (peer)=>\n peer.on 'open', ()=>\n @currentlyadding = peer\n that = @\n peer.send that.syncProcessOrder[0]()\n current_sync_function = that.syncProcessOrder[1];\n current_sync_i = 0\n peer.on 'data', (data)->\n console.log(\"receive data: #{JSON.stringify data}\")\n current_sync_i++\n if current_sync_i < that.syncProcessOrder.length\n peer.send current_sync_function.call that, data\n current_sync_function = that.syncProcessOrder[current_sync_i]\n else if current_sync_i is that.syncProcessOrder.length\n that.connections[peer.peer] = peer\n peer.on 'close', ()->\n delete that.connections[peer.peer]\n delete that.unsynced_connections[peer.peer]\n isEmpty = (os)->\n for o of os\n return false\n return true\n if isEmpty(that.unsynced_connections)\n that.isConnected = true\n for f in that.computeWhenConnected\n f.call(that)\n that.computeWhenConnected = []\n else \n for f in that.receive_handlers \n f peer.peer, data\n\n\n \n \n \n \n \n \n \n \n \n "]}