Advertisement
Guest User

Chat application.js

a guest
May 27th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $(function () {
  2.     "use strict";
  3.  
  4.     var header = $('#header');
  5.     var content = $('#content');
  6.     var input = $('#input');
  7.     var status = $('#status');
  8.     var myName = false;
  9.     var author = null;
  10.     var logged = false;
  11.     var socket = atmosphere;
  12.     var subSocket;
  13.     var transport = 'websocket';
  14.  
  15.     var url = document.location.toString();
  16.     url = url.split('/');
  17.     url = url[url.length - 1];
  18.     url = url.split('=');
  19.    
  20.    
  21.     // We are now ready to cut the request
  22.     var request = { url: 'http://localhost:8080/LabJEE/room/' + url[url.length - 1],
  23.         contentType : "application/json",
  24.         logLevel : 'debug',
  25.         transport : transport ,
  26.         trackMessageLength : true,
  27.         reconnectInterval : 5000 };
  28.  
  29.     request.onOpen = function(response) {
  30.         content.html($('<p>', { text: 'Atmosphere connected using ' + response.transport }));
  31.         input.removeAttr('disabled').focus();
  32.         status.text('Choose name:');
  33.         transport = response.transport;
  34.  
  35.         // Carry the UUID. This is required if you want to call subscribe(request) again.
  36.         request.uuid = response.request.uuid;
  37.     };
  38.  
  39.     request.onClientTimeout = function(r) {
  40.         content.html($('<p>', { text: 'Client closed the connection after a timeout. Reconnecting in ' + request.reconnectInterval }));
  41.         subSocket.push(JSON.stringify({ author: author, message: 'is inactive and closed the connection. Will reconnect in ' + request.reconnectInterval }));
  42.         input.attr('disabled', 'disabled');
  43.         setTimeout(function (){
  44.             subSocket = socket.subscribe(request);
  45.         }, request.reconnectInterval);
  46.     };
  47.  
  48.     request.onReopen = function(response) {
  49.         input.removeAttr('disabled').focus();
  50.         content.html($('<p>', { text: 'Atmosphere re-connected using ' + response.transport }));
  51.     };
  52.  
  53.     // For demonstration of how you can customize the fallbackTransport using the onTransportFailure function
  54.     request.onTransportFailure = function(errorMsg, request) {
  55.         atmosphere.util.info(errorMsg);
  56.         request.fallbackTransport = "long-polling";
  57.         header.html($('<h3>', { text: 'Atmosphere Chat. Default transport is WebSocket, fallback is ' + request.fallbackTransport }));
  58.     };
  59.  
  60.     request.onMessage = function (response) {
  61.  
  62.         var message = response.responseBody;
  63.         try {
  64.             var json = JSON.parse(message);
  65.         } catch (e) {
  66.             console.log('This doesn\'t look like a valid JSON: ', message);
  67.             return;
  68.         }
  69.  
  70.         input.removeAttr('disabled').focus();
  71.         if (!logged && myName) {
  72.             logged = true;
  73.             status.text(myName + ': ').css('color', 'blue');
  74.         } else {
  75.             var me = json.author == author;
  76.             var date = typeof(json.time) == 'string' ? parseInt(json.time) : json.time;
  77.             addMessage(json.author, json.message, me ? 'blue' : 'black', new Date(date));
  78.         }
  79.     };
  80.  
  81.     request.onClose = function(response) {
  82.         content.html($('<p>', { text: 'Server closed the connection after a timeout' }));
  83.         if (subSocket) {
  84.             subSocket.push(JSON.stringify({ author: author, message: 'disconnecting' }));
  85.         }
  86.         input.attr('disabled', 'disabled');
  87.     };
  88.  
  89.     request.onError = function(response) {
  90.         content.html($('<p>', { text: 'Sorry, but there\'s some problem with your '
  91.             + 'socket or the server is down' }));
  92.         logged = false;
  93.     };
  94.  
  95.     request.onReconnect = function(request, response) {
  96.         content.html($('<p>', { text: 'Connection lost, trying to reconnect. Trying to reconnect ' + request.reconnectInterval}));
  97.         input.attr('disabled', 'disabled');
  98.     };
  99.  
  100.     subSocket = socket.subscribe(request);
  101.  
  102.     input.keydown(function(e) {
  103.         if (e.keyCode === 13) {
  104.             var msg = $(this).val();
  105.  
  106.             // First message is always the author's name
  107.             if (author == null) {
  108.                 author = msg;
  109.             }
  110.  
  111.             subSocket.push(JSON.stringify({ author: author, message: msg }));
  112.             $(this).val('');
  113.  
  114.             input.attr('disabled', 'disabled');
  115.             if (myName === false) {
  116.                 myName = msg;
  117.             }
  118.         }
  119.     });
  120.  
  121.     function addMessage(author, message, color, datetime) {
  122.         content.append('<p><span style="color:' + color + '">' + author + '</span> @ ' +
  123.             + (datetime.getHours() < 10 ? '0' + datetime.getHours() : datetime.getHours()) + ':'
  124.             + (datetime.getMinutes() < 10 ? '0' + datetime.getMinutes() : datetime.getMinutes())
  125.             + ': ' + message + '</p>');
  126.     }
  127. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement