Browser console output

http://www.jquery4u.com/jquery-functions/jquery-each-examples/

by codemeasandwich

JavaScript

function NetworkClient (sendFunction, callback) {
  NetworkClient.idx++;
  this.idx = NetworkClient.idx
  this.sendFunction = sendFunction;
  this.callback = callback;
  NetworkClient.cache = [];
}
NetworkClient.idx = 0;




NetworkClient.prototype.send = function (data) {
    console.log(data,this);
    // Could wrap data with extra information to send
    var goIt = false;
    
    console.log("NetworkClient.cache is ",NetworkClient.cache);
    for(var i = 0;i<NetworkClient.cache.length;i += 1){
    console.log("Looking for ");
    console.log(NetworkClient.cache[i].key,data);
    
        if(NetworkClient.cache[i].key===data){
          goIt=true
        } 
    }
    if(!goIt){
      NetworkClient.cache.push({key:data,idx:this.idx,send:true});
      this.sendFunction(data);
    }
    
};

NetworkClient.prototype.recv = function (data) {
    // Could unpack data and validate
      var first = true, go = false;
      NetworkClient.cache.forEach((element, index, array)=>{
        var c = NetworkClient.cache[index];
        if(c.idx!==this.idx){
         if(c.send){
          if( c.key === data && first){
              go = true;
          }  
          first = false;
        }
        if(go && c.send ){
          this.callback(c.key);    
          c.send = false
        }
        }
     })

};

function PerfectNetwork(callbackA, callbackB) {
    var network = this;
    this.clientA = new NetworkClient(
        function (data) { network.clientB.recv(data); }, callbackA);
    this.clientB = new NetworkClient(
        function (data) { network.clientA.recv(data); }, callbackB);
};

var network = new PerfectNetwork(
    function (data) { console.log("CLIENT-A Got: " + data); },
    function (data) { console.log("CLIENT-B Got: " + data); }
);



network.clientA.send("abcd");
network.clientA.send("wxyz");
network.clientB.send("1234");
network.clientA.send("EOF");

/*
CLIENT-B Got: abcd
CLIENT-B Got: wxyz
CLIENT-A Got: 1234
CLIENT-B Got: EOF
*/