Владимир Грабко: ты начни в БД писать асинхронно и нагрузка спадёт, асинхронно в данном случае означает, что в течение 2-3 секунд копишь сообщения в кэше, далее сбрасываешь в БД. При обращении клиента, если он находит диалог в кэше в базу лезть не нужно
Rou1997: есть одна важная особенность, сокетное соединение оборвавшееся на другом конце без пинга и ближайшего посыла сообщения с первого конца будет считать открытым, где стабильность? я к тому, что пинговать всё равно придётся, но выделять на это целый поток - в корне неправильно, переключение операционкой между потоками будет одним из узких мест
так же по независящим от клиента/сервера причинам соединения могут обрываться достаточно часто (всё же мы в интернете, и пакеты ходят через NAT которые сконфигурены по-разному)
по потоку на соединение - слишком оптимистичная оценка возможностей машины и реальности
Rou1997:
1) чистые потоки тяжелы (они ведь будут однородную работу выполнять), поток на юзера - это одна из ошибок новичков, поэтому глянь примеры конкурентных моделей (как устроены пулы соединений, всякие менеджеры соединений), в некоторых случаях будет достаточно на гитхабе код посмотреть
2) www.cse.unsw.edu.au/~cs9242/07/lectures/10-threads.pdf
Дмитрий: я объясняю ещё раз: некорректность может быть вызвана истечением (для этого ты проверяешь локально в браузере) или всем остальным (содержанием, в том числе подменой времени истечения), его нет смысла проверять при старте приложения, т.к. если подменили перед стартом, то с таким же успехом подменят и после, поэтому заморачиваться не стоит (важно чтобы сервер корректно выдавал 401)
при правильной работе приложения - этого достаточно, при неправильной можно полагать, что вмешался злоумышленник, важно не скомпрометировать защищенные данные
в чем вопрос то, какой смысл проверять токен на старте?
Дмитрий:
1) ты встраиваешь интерцептор в $http
2) при любом запросе, в котором фигурирует неверный токен сервер вернет 401, т.о. перекинет на стейт аутентификации
3) при успешной аутентификации ты сохраняешь токен и время когда он истекает, т.о. в геттере токена ты каждый раз проверяешь это время