derbyparty/derby-faq

Как работают подписки?

Closed this issue · 10 comments

В документации дерби есть пример, когда подписка на несколько запросов задается с помощью одной функции

model.subscribe(user, todosQuery, function(err)...

Сокращает ли такая форма записи количество запросов которые получит сервер?

А по сравнению с чем? С:

model.subscribe(user, function(err){
    model.subscribe(todosQuery, ...
});

Количество запросов на сервере, думаю, будет тем же, но в первом случае рендеринг будет совершен быстрее, так как все данные подтягиваются за один раз.

Ага, тоесть несколько запросов можно вложить в 1 пакет и тогда будет меньше нагрузка на канал, верно? Жаль, что поздно я это увидел в доках :-)

А вот тогда возможно ли в 1 подписку вложить переменное количество запросов? Например: model.subscribe [query0...queryN], (err)->?

Ага, тоесть несколько запросов можно вложить в 1 пакет и тогда будет меньше нагрузка на канал, верно?

Ага.

А вот тогда возможно ли в 1 подписку вложить переменное количество запросов?

Можно, subscribe может принимать массив. То есть именно так и работает:
model.subscribe [query0, query1, ...queryN], (err)->

И (гипотетически) возможно ли группировать запросы для server-query?

не вижу проблем, то, что возвращает model.serverQuery - это абсолютно то же самое, что возвращается model.query, их так же можно засунить в массив и передать в subscribe

А как sharejs работает? Я спрашивал в чате, но что-то меня заигнорили
Если два человека посетили ленту, то монго получит 2 запроса или же запрос будет только под перого юзера, а второй получит данные которые недавно были отданы первому клиенту?

Аналогично с подписками, если они оба подписаны на ленту и прилетела новая запись, то дерби раздаст подписчикам один и тот же пакет, да?

не вижу проблем, то, что возвращает model.serverQuery - это абсолютно то же самое, что возвращается model.query, их так же можно засунить в массив и передать в subscribe

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

А как sharejs работает? Я спрашивал в чате, но что-то меня заигнорили

Я еще не смотрел, но подозреваю, что 2 раза сработает. Это, кстати не в sharejs а в livedb надо смотреть. Я в свободное время (по выходным) кокпаюсь во внутренносятх livedb sharejs и т.д. и в следующую сессию планрую выяснить, но, сейчас праздники, поэтому не могу ничего обещать.

Но в любом случае, не стоит бояться кода этих библиотек, он вполне понятен, те же самы соединения и query там вполне себе в понятных местах храняться. Вряд ли много времени нужно, чтобы это выяснить самому.

Угу, но мне как-то фронт-энд ближе, очевидно что там нечего бояться и чужой код полезно читать. Но каюсь пока не погружался, мне фронт-энд интереснее.

По хорошему же нужно хешировать тело запроса и получать таким образом его ключ. И если прилетел запрос с тем же ключом, то брать его из редиса. Удобно же и просто.

Ну да, но нужно еще следить за количеством ссылок. Думаю, если этого еще нет, то можно без каких-то гипер усилий сделать.

Посмотрел как работает livedb:

Если два человека посетили ленту, то монго получит 2 запроса или же запрос будет только под перого юзера, а второй получит данные которые недавно были отданы первому клиенту?

2 запроса

Аналогично с подписками, если они оба подписаны на ленту и прилетела новая запись, то дерби раздаст подписчикам один и тот же пакет, да?

Здесь все выполняется за одно действие, не смотря на то, что клиентов 2

Артур, спасибо!