Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var wsLibrary = {};
- wsLibrary.wsManager = function(webSocketAddress){
- // Private properties of a wsManager object
- var wsAddress = webSocketAddress;
- var clientMessages = [];
- var serverMessages = [];
- var webSocket = new WebSocket(wsAddress);
- var that = {};
- // Private methods of a wsManager object
- var getMessage = function(messageString){
- var messageId = serverMessages.length + 1;
- serverMessages[messageId] = wsLibrary.serverMessage(messageString);
- var isRespondingTo = serverMessages[messageId].isRespondingTo();
- if ( isRespondingTo !== "nobody" ){
- if ( clientMessages[isRespondingTo].noResponseReceived === undefined ){
- clientMessages[isRespondingTo].setResponseStatusTrue();
- if (clientMessages[isRespondingTo].stopWaiting !== undefined){
- clientMessages[isRespondingTo].stopWaiting();
- }
- clientMessages[isRespondingTo].onResponse( serverMessages[messageId].getMessageContent() );
- } else {
- // Deliberately do nothing, the client has already move on
- }
- } else {
- //decideWhatToDo();
- }
- };
- var timeIsOut = function(clientMessageObject){
- if ( clientMessageObject.getResponseStatus() === false ){
- clientMessageObject.noResponseReceived = true;
- if ( clientMessageObject.stopWaiting !== undefined ){
- clientMessageObject.stopWaiting();
- }
- if ( clientMessageObject.noResponse !== undefined ){
- clientMessageObject.noResponse();
- }
- }
- // else: the message has receiveda response, hence do nothing
- };
- // Some things this funcion does
- webSocket.onmessage = getMessage(e.data);
- // Public methods of a wsManager object
- that.close = function () {
- webSocket.close;
- };
- that.sendMessage = function(messageDescriptorObject){
- var messageId = clientMessages.length + 1;
- messageDescriptorObject.messageId = messageId;
- messageDescriptorObject.sessionId = localStorage.sessionId || "000000000000000";
- clientMesssages[messageId] = wsLibrary.clientMessage(messageDescriptorObject);
- webSocket.send( clientMessages[messageId].toString() );
- if (clientMessages[messageId].responseTimeout !== undefined){
- setTimeout(timeIsOut, clientMessages[messageId].responseTimeout(), clientMessages[messageId]);
- }
- if (clientMessages[messageId].startWaiting !== undefined){
- clientMessages[messageId].startWaiting();
- }
- };
- return that;
- };
- wsLibrary.clientMessage = function(messageDescriptorObject){
- // Private properties of a clientMessage object
- var messageId = messageDescriptorObject.messageId;
- var isRespondingTo = messageDescriptorObject.isRespondingTo || "null";
- var sessionId = messageDescriptorObject.sessionId;
- var messageType = messageDescriptorObject.messageType;
- var messageContent = messageDescriptorObject.messageContent || "null";
- var resonseStatus = false;
- var responseTimeout = messageDescriptorObject.responseTimeout;
- // Defines a clientMessage object, i.e. what this function returns
- var that = {};
- // Public methods of a clientMessage object
- // Getters and setters for responseStatus
- that.getResponseStatus = function () { return responseStatus; };
- that.setResponseStatusTrue = function () { responseStatus = true };
- // Getter for responseTimeout
- that.responseTimeout = function () { return responseTimeout; };
- that.onResponse = messageDescriptorObject.onResponse;
- that.startWaiting = messageDescriptorObject.startWaiting;
- that.stopWaiting = messageDescriptorObject.stopWaiting;
- that.noResponse = messageDescriptorObject.noResponse;
- that.toString = function (){
- var string = "#" + sessionId + "#" + messageId + "#" + isRespondingTo + "#" + messageType + "#" messageContent + "#";
- return string;
- };
- return that;
- };
- wsLibrary.serverMessage = function(messageString){
- var messageId;
- var isRespondingTo;
- var messageType;
- var messageContent;
- // Parses the server string and assigns the right values to the above variables
- var i=0;
- var j=0;
- var tmp_string = "";
- for(i; i < messageString.length; i++){
- if ( messageString[i] !== "#" || j === 3 ){
- tmp_string = tmp_string.concat(messageString[i]);
- } else {
- switch(j){
- case 0:
- messageId = tmp_string;
- break;
- case 1:
- isRespondingTo = tmp_string;
- break;
- case 2:
- messageType = tmp_string;
- break;
- case 3:
- messageContent = tmp_string
- break;
- default:
- break;
- }
- j++;
- tmp_string = "";
- }
- }
- var that = {};
- // Public methods of a serverMessage object
- that.getMessageId = function () { return messageId; };
- that.isRespondingTo = function () { return isRespondingTo; };
- that.getMessageContent = function () { return messageContent; };
- that.getMessageType = function () { return messageType; };
- return that;
- };
Advertisement
Add Comment
Please, Sign In to add comment