Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const components = new Components()
- function ChatConsumers(user_id) {
- // Первый шаг подключение к сокетам
- const chatSocket = new WebSocket(
- `ws://${window.location.host}/ws/chat-list/${user_id}/`
- );
- // Метод для отправки сообщений
- components.list_components['button_sent'].onclick = function (e) {
- let messageInputDom = components.list_components['message_input'];
- let message = messageInputDom.value;
- if (components.objectId) {
- chatSocket.send(JSON.stringify({
- 'action': 'send_message',
- 'message_data' : {
- 'author_id': user_id,
- 'chat_id': components.objectId,
- 'message': message,
- }
- }));
- components.loadMessage()
- } else {
- //Заменить предупреждением
- alert('Чат не выбран')
- }
- messageInputDom.value = '';
- message = ''
- }
- // Получаем статус открытия сокета, удаляем статус загрузки, и отправляем команду на получение чатов
- chatSocket.onopen = function (event) {
- components.change_loader_connection(false);
- chatSocket.send(JSON.stringify({
- 'action': 'get_chat_list'
- }));
- };
- //Получаем чаты и отрисовываем на клиенте
- chatSocket.onmessage = function (e) {
- const data = JSON.parse(e.data);
- if (data.chat_list){
- Components.chatRendering(data.chat_list, components.list_components);
- }
- //Тут проверяем пришло ли новое уведомление сортируем чаты по последнему сообщению !!!! øøøø
- };
- // При закрытия сокета срабатывает данный метод
- chatSocket.onclose = function (e) {
- components.change_loader_connection(true) // Выставляем статус загрузки в true
- setTimeout(function () {
- ChatConsumers(user_id); // Заново Вызываем метод
- }, 1000);
- };
- return chatSocket // Возвращает компонент Websockets
- }
- // Инициализация подключения
- let chatSocket = ChatConsumers(user_id);
- function chatInitialization(objectId) {
- components.stateSetting(
- objectId,
- chatSocket,
- components.list_components
- )
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement