Про Meteor и готовность подписок

Это первая и самая маленькая статья из моего возобновленного цикла. Теперь мы рассмотрим маленький нюанс великолепного фреймворка Meteor, и проблему к которой может этот нюанс привести.

Зайдите на свой сайт, откройте консоль для выполнения JS и взгляните на значение функции

DDP._allSubscriptionsReady()

Если на каждой из страниц вы получили результат true. Вам не о чем беспокоится.

Однако что если результат выполнения false? Это проблема?

Данный метод, как видно по названию, проверяет готовы ли подписки в клиентской части. true - готовы, false - нет. В случае если подписки не готовы - у вас есть проблема на сайте.

Как мне решить проблему?

Причина может быть какая угодно, неправильная подписка или обращение с ней, плохой плагин. В одном из моих проектов оказалось что проблема сразу в 2 местах: в некорректном плагине, и в собственном коде. Так что постарайтесь разобраться с проблемой.

Какие могут быть последствия?

А теперь самая интересная часть, какие же могут быть последствия. Самое интересное из последствий то, что некоторые браузеры попросту не будут считать ваш сайт загруженным до конца, и будут считать что Meteor все еще грузится. В частности модуль Spiderable от Meteor'a с приложение PhantomJS попросту повиснут при открытии при открытии:

spiderable: phantomjs failed: Error: Command failed:

без какого либо указания причины (на самом деле виноват таймаут)


Вывод

Пишите корректный код, следите за использованием подписок через DDP._allSubscriptionsReady().

Комментарии

Популярные сообщения из этого блога

Работа с mkvmerge, или как добавить звуковые дорожки в видео.

Qt/C++. Экспорт в pdf - это легко.

Старт