Шаблон наблюдателя по HTTP и TCP / IP (сервер-клиент)


9

У меня есть сервер и много клиентов (около 50 клиентов), которые подключаются к этому серверу на основе веб-приложения, которое, конечно, основано на протоколе HTTP, который, в свою очередь, использует TCP / IP (поправьте меня, если я ошибаюсь, потому что я Я не очень хорош в сети).

Проблема заключается в том, что я должен разработать механизм оповещения, при котором, когда кто-то отправляет форму с опасными значениями, менеджер (который также подключен через то же веб-приложение) должен получить всплывающее окно с предупреждением, почти реальное время (мгновенно).

Однако, поскольку протокол HTTP не имеет состояния, я немного озадачен здесь. Я не знаю, как я могу это реализовать.

Одним из решений может быть использование JavaScript наряду с setInterval()функцией для извлечения данных каждую секунду с сервера. Но это кажется мне немного грязным и непрофессиональным.

Ребята, у вас есть идея реализовать другое решение?


Этот пост может помочь stackoverflow.com/questions/640488/…
NoChance

Какие клиенты? Тонкие (основанные на браузере) клиенты или крупные клиенты?
ysdx

@ysdx, думаю, клиенты. Клиенты только с поддержкой браузера.
Саид Нямати

Ответы:


4

Вы должны использовать своего рода ajax push (см. Comet ) для уведомления клиентов. Это может исключить необходимость опроса, вы в основном сохраняете установленное соединение открытым, что может использоваться для уведомления браузера о происходящих событиях. Однако это не работает со всеми браузерами. В таких случаях вы возвращаетесь к «длинному опросу».


6

Я думаю, что именно по этой причине были созданы WebSockets . Если вам не нужна совместимость со старыми браузерами, вы можете использовать это вместо опроса. В любом случае, вы должны использовать опрос как запасной вариант.

Я не уверен, насколько стабильны спецификации / реализации в наши дни (это было не очень стабильно не так давно). Похоже, последняя спецификация реализована в Firefox 6 и Chromium 14.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.