Есть ли способ в Node.js для асинхронной передачи результатов базы данных клиенту?

Предположим, что вы выполняете серию запросов к базе данных (в данном случае sqlite), используя Node.js. Вы знаете, что обработка этих запросов может занять некоторое время, и вы хотите, чтобы клиент обновлялся по мере поступления результатов. То есть вы хотите отправить результаты клиенту асинхронно, а затем обновить DOM.

Я думаю, я могу собрать способ сделать это, используя Faye (или другую кометную систему), шаблонизацию JavaScript и, возможно, Knockout.js. Но есть ли уже рамки или инструмент для такого рода вещей?

Или это просто неправильный подход?

1 ответ

Решение

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

Код сервера:

socket.emit('ranQuery', { info: 'Info From Server!' });

Код клиента:

socket.on('ranQuery', function(data) {
    console.log(data.info); // would output "Info From Server!"
    // update the DOM with the new information
} 

На их сайте множество рабочих примеров. Он может быть установлен как любой другой пакет узла, npm install socket.io,


Обновить:

После открытия и прочтения размещенных вами ссылок я бы сказал, что ваш подход верен. Хотя я никогда не слышал о Фэй, похоже, что он выполняет те же функции, что и Socket.IO (отправка объектов с сервера на клиент), и KnockoutJS будет обрабатывать привязку данных (когда вы обновляете модели, он также обновляется на странице).). Я бы сказал, пойти на это и задавать вопросы здесь, если вы нажмете какие-нибудь препятствия.

Единственная причина, по которой я поднял Socket.IO, заключалась в простоте использования и документации. Недавно я начал проект с использованием AngularJS + Socket.IO. Если вы собираетесь вносить много изменений на стороне клиента на основе частых обновлений с сервера, вы можете также взглянуть на AngularJS и поэкспериментировать с примерами на их веб-сайте.

Если вы думаете, что это будет работать для вас, посетите этот пост в блоге ( http://briantford.com/blog/angular-socket-io.html), чтобы получить действительно полезное руководство по настройке AngularJS для приятной работы с Socket.IO.

Другие вопросы по тегам