Corp/backend/static/js/components/CHAT_MODULES.md

2.4 KiB
Raw Permalink Blame History

Chat JavaScript modules

Серверные Django-шаблоны чатов используют одно пользовательское WebSocket- соединение. Его создаёт userWebSocket.js; остальные модули только подписываются на события или вызывают его публичные методы.

Realtime lifecycle

  • endpoint: /ws/;
  • инициализация: templates/base.html;
  • chat wiring: templates/includes/chat_scripts.html;
  • list wiring: templates/includes/chat_list_scripts.html;
  • connection owner: userWebSocket.js;
  • список чатов: chatListRealtime.js, собственного socket не создаёт.

После готовности соединения публикуется browser event user:ws-ready. Chat wiring сохраняет API в window.chatWebSocketApi для legacy-модулей и публикует chat:system-ready. Для входа в чат используется команда open_chat; серверные обновления приходят как new_message, list_update, message_edited, message_deleted, reaction, typing и poll events.

Не возвращайте старые endpoint-ы /ws/chat/{id}/ и /ws/chats/ и не создавайте socket внутри отдельных компонентов. Текущий protocol, authentication и полный список событий описаны в docs/guides/WEBSOCKET.md.

Группы компонентов

  • chatComposer.js, chatFormManager.js, chatFileUpload.js — ввод и отправка;
  • chatMessageTemplates.js, messageEditing.js, messageReactions.js, messageSelection.js — отображение и действия над сообщениями;
  • chatBadgeManager.js, chatBadgeHandler.js, chatMarkRead.js — unread state;
  • chatListFilter.js, chatListRealtime.js, chatMenuActions.js — список чатов;
  • chatPoll.js — опросы;
  • chatAvatarMap.js — данные аватаров.

Новые компоненты должны принимать зависимости через options, безопасно завершать работу при отсутствии целевой разметки и не дублировать REST/WebSocket transport.