Работа интернет-приложения с медленным мобильным интернетом.
Оглавление статьи
1. Очередь.
2. Разделены отправка данных и получение.
3. Обработка ошибок.
4. Ожидание.
5. Повтор.
6. Сохранение.
1. Очередь.
2. Разделены отправка данных и получение.
3. Обработка ошибок.
4. Ожидание.
5. Повтор.
6. Сохранение.
Продолжаю делать трудную и кропотливую работу - превращаю свой сайт thlaspi.com в мобильное приложение в самом широком смысле. Нелепо и странно, но если почитать что-то по мобильным приложениям в гугле, то - никаких проблем - чёткой границы между сайтом и интернет-приложением нет, по сути любой сайт это и есть мобильное приложение, "а в сущности голые коки - это прекрасно". Но когда начинаешь копать - всё оказывается совсем не таким радужным. И это при том, что сайт thlaspi.com довольно сложен, там всё на аякс-запросах и в общем, там всё серьёзно, но, как известно, дьявол кроется в деталях. Даже в этой сфере у меня есть многие запросы, после окончания работы которых страница перезагружается - а это (на мой взгляд) для интернет-приложения недопустимо. Но сейчас я занимался другим. Изначально сайт писался как будто мобильный интернет везде идеальный. Ну, понятно почему - как раз была эпоха бурного развития мобильного интернета, он появился почти повсюду, и я думал, что если экстраполировать это бурное развитие, то так скоро оно и будет - отличный быстрый мобильный интернет везде. Однако, на практике оказалось не так. Я даже не говорю про какие-то дальние уголки России - вроде Андреапольского района Тверской области (там, кстати, всё довольно неплохо), но даже в Ленинградской приходится постоянно сталкиваться с плохим интернетом даже от самых популярных операторов. Причём, проблемы могут быть связаны как с плохим покрытием, так и с перегрузкой сети! И вот тут начинаются проблемы с "потерей" запросов. То есть я нажал на какую-то кнопку, допустим, Удалить. И - ничего не происходит! Вообще. Просто аякс-запрос потерялся. В итоге мы не знаем - дошёл запрос или нет, удалилась сущность или нет и что теперь? Всё это вызывает мягко говоря разочарование, а то и злость. И вот тут приходится что-то изобретать. Конечно, улучшить скорость связи мы не можем, но мы можем контролировать процесс, чтобы хотя бы знать что происходит и как дальше поступать. С этой задачей мы справимся. Итак, что сделано.
Очередь.
Все наши запросы теперь идут в порядке очереди. Благодаря этому они (запросы) не конфликтуют между собой и не забивают и так слабый интернет, не конкурируют друг с другом).Разделены отправка данных и получение.
Теперь пользователь видит - дошёл запрос до сервера или нет. Например, если запрос дошёл и ошибка произошла на стадии получения ответа, можно и не получать этот ответ - мы же знаем, что у нас всё ок и можем его (ответа) не дожидаться - и делать что-то дальше.Обработка ошибок.
Теперь, если что-то пошло не так, мы, во-первых, видим это, а во-вторых - у нас есть возможность что-то предпринять.Ожидание.
Если, например, запрос не дошёл, наше приложение отсчитывает какое-то количество секунд (пока 15) и пробует отправить запрос снова.Повтор.
Мы также можем вручную отправить запрос не дожидаясь этих 15-ти секунд.Сохранение.
Если мы предвидим, что интернета по каким-то причинам не будет в ближайшее время, мы можем отложить выполнение нашего запроса. Потом, когда интернет появится, наш запрос выполнится и наши данные не пропадут. Справедливости ради надо сказать, что плохой работой при медленном интернете грешат большинство сложных сайтов и интернет-приложений. У mail.ru и контактика есть кое-что, хоть и не очень "доходчиво", но вполне терпимо, за что большое спасибо разработчикам этих сайтов - они хоть как-то думают о пользователях с медленным интернетом, купающихся и отдыхающих в Российской глубинке. Правда они сделаны (полностью или отчасти) на реакте, а следовательно очень медленно грузятся, но тут на пользователей плевать - я это понимаю - скажи, попробуй где-нибудь на форуме, что реакт отстой - заклюют, сторонники реактивных фреймворков агрессивны - ну, ещё бы - невозможно ведь признать, что ты берёшь за свою работу в десять раз больше денег потому, что тебе так удобнее и при это ты ощущаешь себя крутым за счёт клиента. Но это ладно, я то могу себе позволить отказаться от тщеславия (и от реакта) на своём сайте, зато работает и грузится быстренько, особенно это заметно когда связь не быстрая.Приложения к тексту:
<--Предыдущая статья | Следующая статья-->