Потоковая передача в реальном времени для каждого пользователя через некоторый сервер Comet - PullRequest
0 голосов
/ 29 сентября 2011

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

Допустим, два пользователя интересуются спортивными (категориями) RSS-потоками из потокового API, но у каждого пользователя есть собственный механизм фильтрации на сервере, который приводит к различным наборам push-данных ...

Используя juggernaut , вы можете передавать данные по категориям (каналам), но я не смог найти способ отфильтровать некоторую часть данных по категориям на стороне сервера в зависимости от настроек фильтра пользователя.

1 Ответ

1 голос
/ 29 сентября 2011

Каналы обычно используются для фильтрации данных, т.е. один для / SPORT / FOOTBALL / PREMIERLEAGUE / MANU, другой / SPORT / FOOTBALL / CHAMPIONSHIP / WESTHAM и /SPORT/GOLF/USMASTERS.

Я знаю только одинсервер Comet в реальном времени, который предлагает дополнительную фильтрацию через подписки на каналы, и это Caplin System Liberator .Например (псевдокод):

var subscriber = new Subscriber();
var filter = "headline~transfer"; // where '~' means contains
subscriber.subscribe("/SPORT/FOOTBALL/PREMIERLEAGUE/MANU", filter, function(update) {
   // handle update
});

Приведенный выше код будет подписываться на канал, но будет отправлять обновления только тогда, когда появятся обновления, когда поле headline содержит текст transfer.

* 1011.* Другим решением, предлагающим эту функцию запросов, является pubsub.io .С их сайта:
// connect from node
var pubsub = require('pubsub.io').connect('hub.pubsub.io/238258');
// or the browser
var pubsub = pubsubio.connect('hub.pubsub.io/238258');

pubsub.subscribe({
    hello:{$any:['world','mundo','verden']}
}, function(doc) {
    console.log(doc);
});

pubsub.publish({hello:'world'});

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

...