Прототип JavaScript Ajax FIFO Queue - PullRequest
       8

Прототип JavaScript Ajax FIFO Queue

1 голос
/ 16 декабря 2010

Я пишу небольшой веб-клиент для обмена мгновенными сообщениями, он хорошо работает, но я сталкиваюсь с некоторыми проблемами.

Система написана с использованием PHP и JavaScript, она использует идентификаторы аутентификации, которые она помещает на каждой странице, и когда делается запрос ajax, она должна включать этот идентификатор аутентификации. Это не идеальная система, но я не могу ее изменить.

IM-система использует периодических исполнителей (библиотека прототипов), она выполняет 2 периодических вызова:

  1. обновить список контактов, так как он не меняется очень часто, он обновляется каждые 30 секунд или около того
  2. проверять наличие новых сообщений, сейчас это происходит каждые 5 секунд.

Проблема:

Периодический исполнитель вызывает запрос на обновление списка контактов, использует идентификатор аутентификации, сторона PHP получает этот запрос, проверяет идентификатор аутентификации, выполняет задачу, возвращает новый список в формате JSON вместе с новым идентификатором аутентификации, который будет использоваться. по последующим запросам.

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

Я ищу способ сериализации запросов в очередь в стиле FIFO. Это означает, что любой выполненный запрос ajax (проверка сообщений, проверка контактов, отправка сообщения) может быть помещен в очередь и будет выполнен, как только предыдущий вызов ajax завершен (100% выполнено и возвращено)

1 Ответ

1 голос
/ 16 декабря 2010

Может быть хорошей идеей создать класс очереди запросов и использовать его для обработки ваших запросов ajax.Я уверен, что вы можете найти что-то, сделанное уже путем поиска в Google, но вот тот, который я нашел, который должен работать для вас:

http://positionabsolute.net/blog/2007/04/ajax-request-queue.php

Вы должны были бы заменить все ваши вызовы ajax, чтобы использовать этоновая функция, но изменение класса должно решить вашу проблему.

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