Какую технологию я должен использовать для веб-страницы, которая постоянно запрашивает данные с сервера - PullRequest
6 голосов
/ 04 июля 2011

Нам нужно создать веб-интерфейс для отображения некоторых данных. Проблема в том, что данные необходимо обновлять примерно раз в секунду. Для меня как для веб-разработчика очевидным решением является AJAX. К сожалению, одна из целей этого веб-интерфейса заключается в отображении во встроенном окне браузера, которое, как ожидается, будет работать постоянно в течение месяцев или даже лет. Вот и все, месяцы работы без перезапуска / обновления. Во время тестирования мы запустили концептуальный интерфейс (который запрашивал простой набор данных каждые 1,5 с) в Safari более месяца. За это время использование памяти Safari возросло с ~ 30 МБ до более 100 МБ. Таким образом, мы боимся стабильности такого решения.

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

Ответы [ 5 ]

1 голос
/ 04 июля 2011

Я бы посоветовал заглянуть в node.js и подключить now.js, который позволяет получать обновления в режиме реального времени через веб-сокеты. Он даже поддерживает старые браузеры, поэтому, если браузер не поддерживает веб-сокеты, он переключится на реализацию сервера комет, AJAX или iframe.

Крайне легко настроить в среде Linux, и имеется достаточно документации для начала работы.

Он работает с javascript и работает на движке javascript Google V8, поэтому, если вы когда-либо работали с OOP Javascript, вы сможете найти его относительно легко.

ССЫЛКА:
http://nodejs.org/
http://nowjs.com/

1 голос
/ 04 июля 2011

Как насчет Adobe AIR в качестве внешнего интерфейса? Вы можете использовать Flash / FLEX внутри, у которых есть достойные сборщики мусора, поэтому длительная работа не будет проблемой. AIR также позволяет писать на XHTML и JavaScript, так что это может быть хорошим вариантом, если вы знакомы только с этими технологиями

PHP не является хорошим выбором для такого рода запросов. Комета кажется хорошим способом получения данных с сервера. Например, вы можете использовать отличный торнадо (Python) в качестве бэкэнда.

ActionScript позволяет использовать TCP-сокеты, чтобы вы могли написать собственный протокол для еще большей производительности и использовать BOOST Asio (C ++) или Netty (Java) в качестве масштабируемого бэкэнда

0 голосов
/ 04 июля 2011

Мой личный любимец - php4 +, mysql, apache или lightpd webserver.

Жестко, я также предлагаю Python.

Я специализируюсь на том, что вы упоминаете, с учетом сказанного, вы на самом деле будете смотреть на экран? Если нет, вам следует запросить страницу, используя сокет http или cronjob wget в linux box.

Да, заголовок http очень важен, если вы попытаетесь удалить его, веб-сервер выдаст ошибку «Сервер - неверный запрос».

Дайте мне знать, что вы решите, у меня есть, чем поделиться :) 1009 *

0 голосов
/ 04 июля 2011

Я подозреваю, что проблема не в AJAX как таковом, а в использовании браузера sich: я не думаю, что все сделано с постоянной работой, и я предполагаю, что все (пере) процессы загрузки станут некоторыми Форма дополнительной памяти в конце.

Я думаю, что вам лучше всего использовать ваши данные с помощью чего-то простого, что вы сами проектируете. Очевидно, что вы можете создать его в одном месте (сервер, запрашиваемый по HTTP или как вам больше нравится), но вам не нужен полноценный веб-браузер, если ваша цель - сначала «пару лет безотказной работы».

0 голосов
/ 04 июля 2011

Может вебсетка?Вместо того, чтобы делать запрос AJAX каждые X секунд, сервер отправляет новые данные по мере их поступления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...