我想知道,如何使用javascript来实现我的用例,
我的应用收到一个帖子请求,然后是incr memcache键,然后它使用第三方API直接向用户(移动应用)发布增值。
EG。首先要求值变为1,发布1。 第二个请求值变为2,发布2 ...
在30秒内小于2k的请求可以正常工作。 如果请求数量高达10k,则用户(移动应用)可能会收到来自发布者的消息过多(耗电量)
所以我必须对节流发布调用,而不是每个请求发布,我想每秒发布一次值。在1秒内,值可以是1,然后发布1.在2秒内,值可以是100,然后发布100.这样我保存了99个发布调用。
当请求不再发生时,我不希望工作人员每秒都在运行。
答案 0 :(得分:1)
每次递增时,将新值缓存到全局变量并使用setInterval将其发布到客户端。这是一个简单的例子:
var key = 0;
// Update the cache to the present
// value on application start
memcache.get('key', updateKey);
// Handle increment request and
// save the new value
app.post('/post', function(req, res){
memcache.incr('key', updateKey);
});
// Update the cached key
function updateKey(err, val){
key = val;
}
// Publish to clients once
// a second
function publish(){
clients.emit(key);
}
setInterval(publish, 1000);
启动和停止此例程更为复杂,可能取决于您如何处理请求/递增值。
答案 1 :(得分:0)
您可以通过多种方式实施它来解决您的问题......