Advertisement
Guest User

Untitled

a guest
Dec 20th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var ourClient;
  2. var server = 'bee1.shamchat.com';
  3. function heyItsMeTheIFrame(server, client) {
  4.     ourClient = client;
  5. }
  6.  
  7. // Load a client
  8. $(document.body).grab(new Element("iframe", {
  9.     src: "http://" + server + "/iframe.html",
  10.     width: 0,
  11.     height: 0,
  12.     frameBorder: 0,
  13.     style: "display:none;"
  14. }));
  15.  
  16. function sendMessage(client, msg) {
  17.     // Ensure we have a client
  18.     if(!ourClient) return;
  19.  
  20.     // Pack ans send message
  21.     offWithItsHeader(new ourClient.Request({
  22.         url: getRequestURL(server, "/send"),
  23.         data: {
  24.             msg: msg,
  25.             id: client
  26.         }
  27.     })).send()
  28. };
  29.  
  30. function sendDisconnect(client) {
  31.     // Ensure we have a client
  32.     if(!ourClient) return;
  33.  
  34.     // Pack ans send message
  35.     offWithItsHeader(new ourClient.Request({
  36.         url: getRequestURL(server, "/disconnect"),
  37.         data: {
  38.             id: client
  39.         }
  40.     })).send()
  41. };
  42.  
  43. function makeid() {
  44.     var text = "";
  45.     var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  46.  
  47.     for( var i=0; i < 10; i++ )
  48.         text += possible.charAt(Math.floor(Math.random() * possible.length));
  49.  
  50.     return text;
  51. }
  52.  
  53. // Searches for a peer
  54. var neededPeers = {};
  55. function findPeer(clientID, callback) {
  56.     var ourID = makeid();
  57.     neededPeers[ourID] = {
  58.         clientID: clientID,
  59.         callback: callback
  60.     }
  61.     sendMessage(clientID, ourID);
  62. }
  63.  
  64. var listenToID;
  65. function listenTo(clientID) {
  66.     if(clientID) {
  67.         if(!listenToID) {
  68.             listenToID = {};
  69.         }
  70.  
  71.         listenToID[clientID] = true;
  72.  
  73.         console.log('Listening to ' + clientID);
  74.     } else {
  75.         listenToID = null;
  76.     }
  77. }
  78.  
  79. function listenToChat(clientID) {
  80.     if(clientID) {
  81.         if(!listenToID) {
  82.             listenToID = {};
  83.         }
  84.  
  85.         listenToID[clientID] = true;
  86.  
  87.         // Locate their partner
  88.         findPeer(clientID, function(np, theirID) {
  89.             console.log('Listening to ' + clientID + '\'s partner: ' + theirID);
  90.             listenTo(theirID);
  91.         });
  92.  
  93.         console.log('Listening to ' + clientID);
  94.     } else {
  95.         listenToID = null;
  96.     }
  97. }
  98.  
  99. // Maps IDs to names
  100. characterMap = {};
  101.  
  102. var ourFaye = new Faye.Client('http://bee1.shamchat.com/faye');
  103. ourFaye.addExtension({
  104.     incoming:function(message, callback){
  105.         if(message.data){
  106.             message.data.channel = message.channel
  107.         };callback(message);
  108.     }
  109. });
  110. ourFaye.disable("autodisconnect");
  111. ourFaye.subscribe('/*', function(g){
  112.     var clientID = g.channel.substring(1);
  113.  
  114.     // Autosend a message
  115.     var replyMessage = 'kBye!';
  116.     if(g.event == 'chat') {
  117.         if(g.data != replyMessage) {
  118.             //sendMessage(clientID, replyMessage);
  119.         }
  120.  
  121.         if(!listenToID || listenToID[clientID]) {
  122.             console.log(clientID + (characterMap[clientID] ? (' (' + characterMap[clientID] + ')') : '') + ': ' + g.data);
  123.         }
  124.  
  125.         if(neededPeers[g.data]) {
  126.             var np = neededPeers[g.data];
  127.             neededPeers[g.data] = null;
  128.  
  129.             if (typeof np.callback === "function") {
  130.                 np.callback(np, clientID);
  131.             } else {
  132.                 console.log(neededPeers[g.data].clientID + ' IS CONNECTED TO ' + clientID);
  133.             }
  134.         }
  135.     }
  136.  
  137.     if(g.event == 'connect') {
  138.         characterMap[clientID] = g.otherCharacter;
  139.     }
  140.  
  141.     //sendDisconnect(clientID);
  142. }, function(e){});
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement