View in chat - main
1
42
782
TX
2021-05-13 07:13:05
(0)
9. Клиент хранит в памяти браузера месаги всех чатиков, которые успел скачать
У большинства чатиков в буфере будет лежать 1 последняя месага, применявшаяся для рисования слева
При переключении чатиков, клиент ничего не качает и даже не оповещает сервани ни о чем.
Клиент просто показывает на экране выбранный буфер, так сказать.
Ну если в буфере на целый экран не хватало, то клиент тогда запросит еще у сервера.
10. Юзер прокрутил наверх - перестало хватать, запросили ещё.
11. Баг клиента: клиент думает, что если в начале буфера месага 70, а в конце 100
то все между ними у него есть.
Этот инвариант ложный, когда при отсутствии коннекта месаги не досылались
а при возобновлении связи была запрошена последняя и воткнута в буфер
Нужно запращивать слегка умнее, да.
12. Бакенд написан на крестах и занимается http/websocket делами и ходит в базу
База самописная, внутри инновационное B+-Tree и база умеет эффективно хранить списки/массивы
Каждый чатик - такой список. Семантика key=[list], где key - имя чатика, например
База умеет мегабыстро достать подинтервал списка, поэтому чатик/тред на нейделать - айс
Ну ясен хрен, база всё вечно хранит на диске, так что бакенд может падать как хочеи, псина такая
Списками обьясняется то, что месаги в каждом чатике идентифицируются целым натуральным числом
TX
2021-05-13 07:45:19
(0)
!
!!
!!!
TX
2021-05-13 16:20:53
(0)
Еппать.
Оказывается в этом чатике поле ввода запилено на contenteditable технологиях.
Это не какой-то там textarea, а вообще жесть.
Например попробуйте сделать перевод строки в середине строки - жопа отвалится.
Брехологи - специалисты по допросам.
1
42
782