Моля, обясни ми някои неща като на тъпак :
https://asm32.info/fossil/repo/asmbb/artifact/8351a9fc7b0ca9ea
Къде е реално таблицата с настройки на юзъра ? Трябва да се прочете ред за юзъра от нея с ново поле както правиш на ред 1045. Предполагам не искаш това да бъде вмъкнато в EventSessions
. Целият sse_service.asm ли отговаря за !events ендпойнта ? Къде WantedEvents се получава в асемблерският код ?
Сега, малко по-сложно е. По принцип, !events
ендпоинта се обработва на друго място. (Въобще, кое къде се обработва се вижда във файла commands.asm).
Koнкретно процедурата за обработка на !events
– EventsRealTime
се намира във realtime.asm
Тази процедура обаче само инициализира реал-тайм сесията и включва сокета, който отговаря за конекцията към списъка за обработка на SSE сървиса. След това приключва обработката, но докато всички други команди приключват и комуникацията по FastCGI, в този случай комуникацията остава отворена и за нея се грижи SSE сървиса. Съответно той я затваря и изчиства, когато сокета се прекъсне от браузъра.
Обработката на events=
параметъра, който се изпраща при заявката /!events?events=NNN
се обработва именно в процедурата EventsRealTime, на първите редове.
SSE сървиса реално е отделна нишка, която следи за нови евенти и когато се появят ги разпраща на тези сокети, които са абонирани за тях. А също след разпращането чисти таблицата в базата данни в която е опашката с евенти. Там беше бая крив алгоритъм, докато до измисля. Даже, ако си спомням добре, го обсъждахме на стария форум.