Javascript 1-секундный AJAX запросов? Использование ресурсов? - PullRequest
1 голос
/ 28 сентября 2011

У меня есть долгосрочная цель - в конечном итоге создать сортировку чата любыми способами, но сейчас я хотел бы просто иметь простую с несколькими вызовами Mysql и ajax.

Чтобы чат казался мгновенным, я бы хотел, чтобы интервал запроса ajax был как можно быстрее. У меня такое ощущение, что если оно меньше или меньше секунды, то это приведет к зависанию браузера, интернета пользователя или моего сервера.

Предполагая, что сервер ничего не возвращает, какую пропускную способность и процессор / память будет использовать клиент с постоянными, с интервалом в одну секунду, вызовами ajax?

edit: Я все еще открыт для предложений о том, как я могу сделать сервер чата. Все, что возможно с бесплатным хостингом от x10 или 000webhost. Мне рассказали о Хеноку, но я понятия не имею, как его использовать.

edit: Спасибо за длинное предложение опроса, но при этом слишком много ресурсов процессора на серверах.

1 Ответ

4 голосов
/ 28 сентября 2011

Один из методов, который можно использовать, - это использовать длительный запрос ajax. Клиент спрашивает, есть ли данные чата. Сервер получает запрос. Если доступны данные чата, он немедленно возвращает эти данные. Если данные чата отсутствуют, он зависает в запросе в течение некоторого периода времени (возможно, двух минут), и если в течение этих двух минут появляются некоторые данные чата, веб-запрос немедленно возвращается с этими данными. Если по прошествии полных двух минут данные чата не получены, вызов ajax возвращается без данных.

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

Чтобы эти «длинные» http-запросы работали, вам просто нужно убедиться, что для вашего базового вызова ajax установлен тайм-аут, превышающий время, установленное вами на сервере.

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

Делая это таким образом, вы можете получить почти мгновенный ответ на клиенте, но делать только 30 запросов в час.

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

Что касается других ваших вопросов, то повторные вызовы ajax (если они разнесены, по крайней мере, на некоторое расстояние друг от друга) на самом деле не сильно используют ресурсы процессора или памяти. Они могут использовать аккумулятор, если не позволяют компьютеру перейти в режим ожидания.

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