Шаблон спостерігача через HTTP та TCP / IP (сервер-клієнт)


9

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

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

Однак, оскільки протокол HTTP без громадянства, я тут трохи спантеличений. Я не знаю, як я можу це здійснити.

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

У вас, хлопці, є ідея щодо реалізації іншого рішення?


Це повідомлення може допомогти stackoverflow.com/questions/640488 / ...
NoChance

Які клієнти? Тонкі (на основі браузера) клієнти чи важкі клієнти?
ysdx

@ysdx, думають клієнти. Клієнти, які підтримують лише браузер.
Saeed Neamati

Відповіді:


4

Ви повинні використовувати якийсь поштовх ajax (див. Комета ), щоб повідомити клієнтів. Це може усунути необхідність опитування, ви в основному залишаєте відкритим встановлене з'єднання, яке можна використовувати для сповіщення браузера про відбуваються події. Однак це працює не у всіх браузерах. Ви впадаєте в подібні випадки до "тривалих опитувань".


6

Я думаю, це саме та причина, по якій були створені WebSockets . Якщо вам не потрібна сумісність зі старими браузерами, ви можете використовувати це замість опитування. Ви, ймовірно, повинні використовувати опитування як запасний варіант.

Я не впевнений, наскільки стабільні характеристики / реалізації в наші дні (це було не дуже стабільно не так давно). Здається, остання специфікація реалізована в Firefox 6 та Chromium 14.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.