2.4 KiB
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.