Подтвердить что ты не робот

Как метеорит обновляет браузер?

Посмотрев Meteor Framework screencast. Я заметил, что изменение базы данных плавно изменяет данные в браузере. Обычно AJAX просто перезагружает часть страницы каждые несколько секунд, но здесь я не заметил перезагрузки браузера. Как они достигли этого в Метеор? Является ли это Node.js зависимым?

ОБНОВЛЕНИЕ: Тоби Кэтлин задает еще один интересный вопрос. Как Meteor обрабатывает разные браузеры?

4b9b3361

Ответ 1

Существует несколько методов, которые позволяют серверу вставлять данные в браузер без необходимости просмотра браузера. Термин для такой технологии Comet [wikipedia.org], и большинство методов связаны с AJAX (там был отбеливатель под названием Comet и продукт для очистки, называемый Ajax). Существует несколько типов соединений: длительный опрос, потоковое XHR, вечный кадр, сервер-отправка-события и веб-порты. Socket.IO - хорошая библиотека, которая предоставляет типы соединений для потоковых серверов.

Вам нужен сервер, который будет поддерживать соединения Comet. Вы можете google для текущих, но с моей головы: node.js, торнадо, cometd, orbited, Jetty streaming

Я бы предположил, что Metor будет использовать разные типы подключений в зависимости от возможностей браузера, например websocket для Chrome и длинного опроса для IE. Если кто-то может дать более конкретный ответ, мне будет интересно.

Ответ 2

Они используют как Session, так и Meteor.autosubscribe (из Meteor API), чтобы гарантировать, что изменения отразятся на клиентах.

Эти API-интерфейсы Meteor используют XHR (XMLHttpRequest) от SockJS. SockJS - утилита эмуляции WebSocket. Поэтому, когда что-то меняется на сервере, SockJS обеспечивает отправку XHR, а измененные данные - в ответ JSON.

Да, Meteor полностью зависит от Node.js. Из документов Meteor:

Приложение Meteor представляет собой сочетание JavaScript, который выполняется внутри клиентского веб-браузера, JavaScript, который выполняется на сервере Meteor внутри контейнера Node.js, и всех поддерживающих HTML-фрагментов, правил CSS и статических активов. Meteor автоматизирует упаковку и передачу этих различных компонентов. И это довольно гибко в том, как вы решили структурировать эти компоненты в своем дереве файлов.

Единственным ресурсом сервера является JavaScript. Meteor собирает все ваши файлы JavaScript, исключая все, что находится под клиентским и общедоступным подкаталогами, и загружает их в экземпляр сервера Node.js внутри волокна. В Meteor код вашего сервера работает в одном потоке для каждого запроса, а не в асинхронном обратном вызове, типичном для Node. Мы считаем модель линейного исполнения более подходящей для типичного кода сервера в приложении Meteor.

Источники: http://docs.meteor.com/ и https://github.com/meteor/meteor