Advertisement
Mochinov

Untitled

Mar 19th, 2022
985
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         const components = new Components()
  2.  
  3.         function ChatConsumers(user_id) {
  4.             // Первый шаг подключение к сокетам
  5.             const chatSocket = new WebSocket(
  6.                 `ws://${window.location.host}/ws/chat-list/${user_id}/`
  7.             );
  8.  
  9.             // Метод для отправки сообщений
  10.             components.list_components['button_sent'].onclick = function (e) {
  11.                 let messageInputDom = components.list_components['message_input'];
  12.                 let message = messageInputDom.value;
  13.                 if (components.objectId) {
  14.                     chatSocket.send(JSON.stringify({
  15.                         'action': 'send_message',
  16.                         'message_data' : {
  17.                             'author_id': user_id,
  18.                             'chat_id': components.objectId,
  19.                             'message': message,
  20.                         }
  21.                     }));
  22.                     components.loadMessage()
  23.                 } else {
  24.  
  25.                     //Заменить предупреждением
  26.                     alert('Чат не выбран')
  27.  
  28.                 }
  29.                 messageInputDom.value = '';
  30.                 message = ''
  31.             }
  32.  
  33.             // Получаем статус открытия сокета, удаляем статус загрузки, и отправляем команду на получение чатов
  34.             chatSocket.onopen = function (event) {
  35.                 components.change_loader_connection(false);
  36.                 chatSocket.send(JSON.stringify({
  37.                     'action': 'get_chat_list'
  38.                 }));
  39.             };
  40.             //Получаем чаты и отрисовываем на клиенте
  41.             chatSocket.onmessage = function (e) {
  42.                 const data = JSON.parse(e.data);
  43.                 if (data.chat_list){
  44.                     Components.chatRendering(data.chat_list, components.list_components);
  45.                 }
  46.                 //Тут проверяем пришло ли новое уведомление сортируем чаты  по последнему сообщению !!!! øøøø
  47.             };
  48.  
  49.             // При закрытия сокета срабатывает данный метод
  50.             chatSocket.onclose = function (e) {
  51.                 components.change_loader_connection(true) // Выставляем статус загрузки в true
  52.                 setTimeout(function () {
  53.                     ChatConsumers(user_id); // Заново Вызываем метод  
  54.                 }, 1000);
  55.             };
  56.             return chatSocket // Возвращает компонент Websockets
  57.         }
  58.  
  59.         // Инициализация подключения
  60.         let chatSocket = ChatConsumers(user_id);
  61.  
  62.  
  63.         function chatInitialization(objectId) {
  64.             components.stateSetting(
  65.                 objectId,
  66.                 chatSocket,
  67.                 components.list_components
  68.             )
  69.         }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement