stdi

wsmanager

Jul 13th, 2012
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var wsLibrary = {};
  2.    
  3. wsLibrary.wsManager = function(webSocketAddress){
  4.  
  5.     // Private properties of a wsManager object
  6.     var wsAddress = webSocketAddress;
  7.     var clientMessages = [];
  8.     var serverMessages = [];
  9.     var webSocket = new WebSocket(wsAddress);
  10.  
  11.     var that = {};
  12.  
  13.     // Private methods of a wsManager object
  14.     var getMessage = function(messageString){
  15.         var messageId = serverMessages.length + 1;
  16.         serverMessages[messageId] = wsLibrary.serverMessage(messageString);
  17.         var isRespondingTo = serverMessages[messageId].isRespondingTo();
  18.         if ( isRespondingTo !== "nobody" ){
  19.             if ( clientMessages[isRespondingTo].noResponseReceived === undefined ){
  20.                 clientMessages[isRespondingTo].setResponseStatusTrue();
  21.                 if (clientMessages[isRespondingTo].stopWaiting !== undefined){
  22.                     clientMessages[isRespondingTo].stopWaiting();
  23.                 }
  24.                 clientMessages[isRespondingTo].onResponse( serverMessages[messageId].getMessageContent() );
  25.             } else {
  26.                 // Deliberately do nothing, the client has already move on
  27.             }
  28.         } else {
  29.             //decideWhatToDo();
  30.         }
  31.     };
  32.     var timeIsOut = function(clientMessageObject){
  33.         if ( clientMessageObject.getResponseStatus() === false ){
  34.             clientMessageObject.noResponseReceived = true;
  35.             if ( clientMessageObject.stopWaiting !== undefined ){
  36.                 clientMessageObject.stopWaiting();
  37.             }
  38.             if ( clientMessageObject.noResponse !== undefined ){
  39.                 clientMessageObject.noResponse();
  40.             }
  41.         }
  42.         // else: the message has receiveda response, hence do nothing
  43.     };
  44.  
  45.     // Some things this funcion does
  46.     webSocket.onmessage = getMessage(e.data);
  47.  
  48.     // Public methods of a wsManager object
  49.     that.close = function () {
  50.         webSocket.close;
  51.     };
  52.     that.sendMessage = function(messageDescriptorObject){
  53.         var messageId = clientMessages.length + 1;
  54.         messageDescriptorObject.messageId = messageId;
  55.         messageDescriptorObject.sessionId = localStorage.sessionId || "000000000000000";
  56.         clientMesssages[messageId] = wsLibrary.clientMessage(messageDescriptorObject);
  57.         webSocket.send( clientMessages[messageId].toString() );
  58.         if (clientMessages[messageId].responseTimeout !== undefined){
  59.             setTimeout(timeIsOut, clientMessages[messageId].responseTimeout(), clientMessages[messageId]);
  60.         }
  61.         if (clientMessages[messageId].startWaiting !== undefined){
  62.             clientMessages[messageId].startWaiting();
  63.         }
  64.     };
  65.  
  66.     return that;
  67. };
  68.  
  69. wsLibrary.clientMessage = function(messageDescriptorObject){
  70.  
  71.     // Private properties of a clientMessage object
  72.     var messageId = messageDescriptorObject.messageId;
  73.     var isRespondingTo = messageDescriptorObject.isRespondingTo || "null";
  74.     var sessionId = messageDescriptorObject.sessionId;
  75.     var messageType = messageDescriptorObject.messageType;
  76.     var messageContent = messageDescriptorObject.messageContent || "null";
  77.     var resonseStatus = false;
  78.     var responseTimeout = messageDescriptorObject.responseTimeout;
  79.  
  80.     // Defines a clientMessage object, i.e. what this function returns
  81.     var that = {};
  82.  
  83.     // Public methods of a clientMessage object
  84.     // Getters and setters for responseStatus
  85.     that.getResponseStatus = function () { return responseStatus; };
  86.     that.setResponseStatusTrue = function () { responseStatus = true };
  87.  
  88.     // Getter for responseTimeout
  89.     that.responseTimeout = function () { return responseTimeout; };
  90.  
  91.     that.onResponse = messageDescriptorObject.onResponse;
  92.     that.startWaiting = messageDescriptorObject.startWaiting;
  93.     that.stopWaiting = messageDescriptorObject.stopWaiting;
  94.     that.noResponse = messageDescriptorObject.noResponse;
  95.     that.toString = function (){
  96.         var string = "#" + sessionId + "#" + messageId + "#" + isRespondingTo + "#" + messageType + "#" messageContent + "#";
  97.         return string;
  98.     };
  99.  
  100.     return that;
  101. };
  102.  
  103. wsLibrary.serverMessage = function(messageString){
  104.     var messageId;
  105.     var isRespondingTo;
  106.     var messageType;
  107.     var messageContent;
  108.    
  109.     // Parses the server string and assigns the right values to the above variables
  110.     var i=0;
  111.     var j=0;
  112.     var tmp_string = "";
  113.     for(i; i < messageString.length; i++){
  114.         if ( messageString[i] !== "#" || j === 3 ){
  115.             tmp_string = tmp_string.concat(messageString[i]);
  116.         } else {
  117.             switch(j){
  118.                 case 0:
  119.                     messageId = tmp_string;
  120.                     break;
  121.                 case 1:
  122.                     isRespondingTo = tmp_string;
  123.                     break;
  124.                 case 2:
  125.                     messageType = tmp_string;
  126.                     break;
  127.                 case 3:
  128.                     messageContent = tmp_string
  129.                     break;
  130.                 default:
  131.                     break;
  132.             }
  133.             j++;
  134.             tmp_string = "";
  135.         }
  136.     }
  137.  
  138.     var that = {};
  139.  
  140.     // Public methods of a serverMessage object
  141.     that.getMessageId = function () { return messageId; };
  142.     that.isRespondingTo = function () { return isRespondingTo; };
  143.     that.getMessageContent = function () { return messageContent; };
  144.     that.getMessageType = function () { return messageType; };
  145.  
  146.     return that;
  147. };
Advertisement
Add Comment
Please, Sign In to add comment