Прочитанное и непрочитанное сообщение: какой обработчик использовать?
Приветствую всех.
Я думаю, что все понимают и видели, как работают прочитанные и непрочитанные сообщения в социальных сетях. Но как именно, в таких случаях, браузер распознает, что сообщение прочитано? Понятно, что это какой-то обработчик, но я не нашел ничего похожего. Всякие указатели мыши, клики, но это не то.
Кто-нибудь знает, какой именно обработчик используется и, если это не обработчик событий, то что?
Думаю, все проще. В базе с сообщениями есть отдельное поле, в которое пишется флаг при его первой загрузке. Потом этот флаг проверяется, что и дает информацию о прочтении.
KorniloFF, Чат происходит в реальном времени. То есть, допустим, оба пользователя онлайн - вебсокет сервер отправляет сообщение одному и второму. А получатель не находится в текущей вкладке и общается с другим пользователем. Сообщение, как бы, доставлено, но не прочитано. Так что этот метод не слишком поможет мне, но спасибо.
"как именно, в таких случаях, браузер распознает, что сообщение прочитано?" - как разработчик решит, так и будет распознавать,
"Кто-нибудь знает, какой именно обработчик используется" - используется тот, который был выбран разработчиком; зависит от конкретной реализации.
В чем именно вопрос у вас? Если бы мне захотелось проверять прочитано ли сообщение, то вероятно я бы сделал как в контакте: сообщение прочитано если активен родительский чатик, всё.
"Чат происходит в реальном времени. То есть, допустим, оба пользователя онлайн - вебсокет сервер отправляет сообщение одному и второму. А получатель не находится в текущей вкладке и общается с другим пользователем." - вариантов опять же до чёрта: ховер, ввод в поле, фокус на чатике или что-нибудь ещё, как вам будет угодно.
"этот метод не слишком поможет мне" - вам поможет только тот метод, который вам самому кажется уместным в данной ситуации. Если флаги не нравятся, то можно например считать, что сообщение прочитано, если его timestamp больше чем timestamp последнего момента присутствия пользователя в соответствующем чатике.
Никита Полевой, Вконтакте сделан фокус на окне? Не знал. Точнее, не обращал внимания - считаются ли сообщения прочитаны, если ты проскроллил вверх. Спасибо, полезная информация.
KorniloFF, ну я указал, что наподобие социальных сетей. Там же чат в реальном времени.
Никита Полевой, По факту, я ищу что-то вроде наличия сообщения в окне браузера. Что-то типа наводки, но наводчиком является вся страница. Я понимаю, что это замудренно и не знаю, возможно ли такое, но я ищу что-то такое. Возможно сделаю одним из предложенных вами вариантов.
JRazor, "Вконтакте сделан фокус на окне" - нет, не фокус на окне, а 1) переключение на чатик, 2) ховер по сообщению, 3) фокус поля ввода и 4) ввод в поле.
"По факту, я ищу что-то вроде наличия сообщения в окне браузера. Что-то типа наводки, но наводчиком является вся страница. Я понимаю, что это замудренно и не знаю, возможно ли такое, но я ищу что-то такое." - тогда мне кажется вам стоит дополнить вопрос описанием именно вот этого момента - что вы подразумеваете под наводкой.
Никита Полевой, Наверное, не нужно. Сделаю так, как в контакте. Выглядит логичным. Если вы перенесете свой ответ в ответы, то я отмечу его как решение. Может поможет кому-то кроме меня.
Например можно подглядеть идею у vk.com, там сообщения считаются прочитанными, если 1) пользователь переключился в чатик, 2) провел по ним курсором мыши, 3) зафокусил поле ввода или 4) попытался ввести что-то в поле.