В браузере FIFO очереди с использованием Javascript и AJAX to Web Service - PullRequest
0 голосов
/ 14 марта 2012

У меня есть приложение Adobe AIR, которое меня попросили преобразовать в приложение HTML5, предназначенное только для браузера.

Приложение предназначено для оценки изображений отсканированных студенческих работ.Приложение AIR получает конфигурационную информацию о том, что подлежит оценке, а затем вызывает веб-службу, которая возвращает XML-сообщение об отдельных элементах, которые должны быть оценены (сервер обрабатывает такие вещи, как блокирование элементов, поэтому только один человек может оценить его одновременно).Затем приложение ставит в очередь эти входящие элементы и загружает изображения для каждого в фоновом режиме.На переднем плане пользователю предоставляется один или несколько входящих в очередь элементов в форме и вводится оценка для каждого.Когда они отправляют, он берет эти оценки и помещает их в исходящую очередь.Наблюдается исходящая очередь, и любые исходящие сообщения затем отправляются другому процессу веб-службы, который записывает оценку на сервере.Опытные пользователи часто могут оценивать их очень быстро в зависимости от предмета (с частотой один раз в секунду), поэтому мы интенсивно используем кэширование, часто сохраняя десятки или даже сотни элементов локально за раз.

ВГлядя на HTML5 и его варианты для локального хранилища и веб-работников, я подумал, что это возможно.Я провел некоторые исследования, но я не слишком опытен с этими новыми функциями HTML5.Я вижу, что веб-работники изолированы и не могут получить доступ к локальному хранилищу или сессионному хранилищу.Я полагал, что входящие и исходящие очереди могут быть просто массивами, которые я нажимаю и выдвигаю, но теперь это не так ясно.Если мне нужен процесс для постоянного просмотра входящей очереди (чтобы она была заполнена) и исходящей очереди (чтобы она была пустой), казалось, что веб-работники были бы идеальными.Но они не могут обмениваться данными или управлять локальным хранилищем.

Есть какие-нибудь мысли или указатели, чтобы заставить меня двигаться в правильном направлении?У меня был бы довольно жесткий контроль над диктовкой требований браузера, чтобы мы могли использовать самые последние и лучшие версии.Веб-сервис также может быть легко перенастроен для обработки JSON вместо XML.Спасибо.

1 Ответ

0 голосов
/ 14 марта 2012

Я рекомендую использовать простые HTML-теги изображений в качестве очереди: скажем, у вас есть 10 (или n, я использую 10 в качестве примера) тегов изображений, все они указывают на некоторые pixel.gif.При запуске приложения вы устанавливаете атрибуты src для первых 10 изображений - это приведет к параллельной загрузке без необходимости что-либо кодировать.Используйте событие onload для ведения домашнего хозяйства.Все эти теги изображений должны быть скрыты.

В момент загрузки первого изображения представьте его пользователю, открыв его.Пользователь оценит его - в этот момент вы скрываете изображение, запускаете вызов AJAX, чтобы записать голосование, и отображаете следующее изображение.

Когда вызов AJAX возвращает успех, вы помечаете этот тег изображения как свободный и следующийв строке и установите атрибут src для следующего изображения.Промойте и повторите.

Суть в том, что при использовании асинхронных HTML-конструкций, таких как загрузка изображения или XmlHttlRequest, вам не нужно беспокоиться об очередях или веб-работниках - в процессе создания приложения, которое совместимодаже с немного устаревшими браузерами.

...