Чтение непрерывной подачи из CouchDB с помощью Ajax / jQuery - PullRequest
5 голосов
/ 20 ноября 2010

Я хочу слушать непрерывные изменения из CouchDB с помощью jQuery - теперь это работает:

http://localhost:5984/testdb/_changes?feed=continuous

, что означает, что я получаю новую строку json каждый раз, когда происходит обновление базы данных - но как мне прочитать обновления с этого URL с помощью jQuery?

Я пытался использовать это, но это не работает:

$.ajax(
{
  url : "http://localhost:5984/testdb/_changes?feed=continuous&callback=?",
  dataType : 'json',
  success : function(data)
  {
    alert(data.results.length);
  }
});

Редактировать : $ .ajax вызывает функцию «success» и немедленно возвращается, она не «опрашивает» изменения ... (столбец шкалы времени для столбца ajax на изображении ниже равен 16 мс)

alt text

И нет, это не междоменная проблема ajax - я вижу, что в fireBug есть ответ с правильным количеством элементов

Так что любые рекомендации / советы будут оценены - это не обязательно должен быть jQuery - просто старый javscript тоже подойдет

1 Ответ

1 голос
/ 21 ноября 2010

Вверху головы я могу придумать два хороших способа сделать это.

  1. Используя таймер (т.е. setTimeout();), запустите вызов AJAXизменения подаются каждые X секунд.Вы также сохраните последний полученный вами порядковый номер, чтобы вы могли сообщить фиду изменений, какой порядковый номер следует начать при следующем опросе.Это предотвратит дублирование данных и уменьшит количество ответов.

  2. В зависимости от того, какие браузеры вам нужно поддерживать, вы можете использовать API EventSource.Вот реализация jQuery: https://github.com/rwldrn/jquery.eventsource

...