我需要设计一个流式 API,其中每个连接的用户可能每个类别都有不同的数据。
假设两个用户对来自流 api 的运动(类别)RSS 提要感兴趣,但每个用户在服务器上都有自己的过滤机制,这会导致不同的推送数据集......
通过使用juggernaut,您可以通过类别(通道)流式传输数据,但我找不到根据用户过滤器设置在服务器端过滤每个类别的某些数据的方法。
我需要设计一个流式 API,其中每个连接的用户可能每个类别都有不同的数据。
假设两个用户对来自流 api 的运动(类别)RSS 提要感兴趣,但每个用户在服务器上都有自己的过滤机制,这会导致不同的推送数据集......
通过使用juggernaut,您可以通过类别(通道)流式传输数据,但我找不到根据用户过滤器设置在服务器端过滤每个类别的某些数据的方法。
通道通常用于过滤数据,即一个用于/SPORT/FOOTBALL/PREMIERLEAGUE/MANU,另一个用于/SPORT/FOOTBALL/CHAMPIONSHIP/WETHAM 和/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
。
似乎提供此查询功能的另一个解决方案是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'});
这种渠道查询很可能是我们开始看到更多的东西。