js EventSource - что должно быть на сервере?

I
На сайте с 04.11.2014
Offline
3
578

Давно пытаюсь понять принцип реализации push-сообщений от сервера в браузер, но не могу :( в рот мне ноги..

Ток что прочитал про EventSource объект которого позволяет поддерживать постоянное соединение с сервером. Но вот на сервере это соединение что принимает? Даже вот элементарный диалог типа как в ВК - у меня реализован адовым костылём с дёрганьем сервера каждые 15 секунд.. на сервере только

- apache

- nginx

- php

- mysql

Чего нужно для поддержки push от сервера? Этого ведь явно мало, или.. я не вкурсе просто

[umka]
На сайте с 25.05.2008
Offline
456
#1

Я не в курсе, но я напишу, как я бы это сделал :)

Скрипт на сервере, вызываемый, например, ява-скриптом, раз в N секунд проверяет наступление каких-то событий и, в случае их наступления, выдаёт в вывод какие-то данные, а слушающий ява-скрипт уже с этими данными что-то делает, показывает уведомления и пр.

Скрипт на сервере после проверки события делает sleep(N) и поэтому не отваливается по тайм-лимиту.

Ява-скрипт, разумеется, как-то должен проверять соединение и переподключаться в случае необходимости.

Лог в помощь!
I
На сайте с 04.11.2014
Offline
3
#2
umka:
ява-скриптом, раз в N секунд проверяет наступление каких-то событий

оно так и есть, тут даже пуш лишний. нужно именно когда сервер получил новые данные, он сам отправил в браузе сообщение. Например новых данных нет 45 минут, и ни браузер ни сервер никаких сообщений друг другу не отправляют, а на 46 минуте чёто на сервере обновилось и он такой - дыдышь - push браузеру - обана, свежачёк..

---------- Добавлено 06.11.2014 в 14:39 ----------

umka:
Скрипт на сервере после проверки события делает sleep(N)

Или цикл бесконечный. Оно всё процессор сожрёт нафиг... мне так кацца

---------- Добавлено 06.11.2014 в 14:42 ----------

Видимо без NodeJs на сервере не обойтись..

http://habrahabr.ru/post/120429/

[umka]
На сайте с 25.05.2008
Offline
456
#3

Видимо, вы меня не поняли :)

Серверный скрипт вызывается ява-скриптом один раз (при загрузке страницы).

И соединение удерживается.

Далее этот серверный скрипт раз в N секунд делает какие-то свои проверки, и если видит, что совершилось какое-то нужное событие, отправляет информацию ява-скрипту в браузер (просто выдаёт данные в стандартный вывод).

Серверный скрипт также может периодически отправлять какие-то данные для поддержания IDLE.

А браузерный скрипт должен переустанавливать соединение, если такие данные не приходят.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий