Обратная связь с клиентом
Ситуэйшн такой:
есть пхп сайт, с ним связан мускуль. Обновление данных в мускуле может производится разными юзерами.
Вопрос - каким образом можно сообщить друим клиентам, что произошло изменение в БД, вроде HTTP не предоставляет доугой связи, кроме как запросов от клиента...
Сорри если не оч понятно - мозги в ступоре из за этого (
Все что пока удалось придумать:
1) таймер на каждом клиенте с опросом сервера
2) некий скрипт, выполняющийся на самом сервере, который будет држать открытым какой-нить порт, а клиенты сокет будет ловить данные...
но все эт как то мутно помойму..
Если кто сталкивался - подскажите плиз.
Легче всего действительно на клиенте создать таймер JavaScript который будет с определенной периодичностью дергать с помощью Ajax сервер и получать обновленные данные.
Вариант с открытым соединением тоже возможен, но это крайне геморойное дело и связываться с этим не советую.
И в догонку еще вопросик.
при подключении клиента в БД пишется что он мол онлайн. И еще хотелось бы записывать когда он вышел в оффлайн. Как это реализовать - ума не приложу. ведь запрос от клиента может придти и через 1 мин и через 1 день. с теме же куками и номером сессии. Как узнать что клиент вырубил браузер и "отключился" от сервера. чтобы черкануть каким то образом в базу что мол усе - оффлайн.
Читал про выполнение скрипта на страничке, даже если пользователь отключился - там что-то написать свою процедуру выхода, отлавливать флаг... только опять вопрос в реализации ((
Для этого при периодическом получении данных отсылай на сервер не просто запрос, а запрос с каким-то идентификатором клиента (id сессии или id самого пользоватлея в базе). Как только от определенного клиента такие запросы перестали приходить - значит человек выключил браузер.
его можно использовать для того, чтобы предупредить пользователя о том, что тот собирается покинуть страничку и имеет какие-то не сохраненные изменения. всё что возвращается, показывается пользователю в диалоге -> (Тест <Confirm> <Cancel>).
можно просто ничего не возвращать, а просто выполнять какое-либо действие (тот же самый JS с запросом на сервер, мол, вырубился).
еще имеется событие onunload.