Get 方法在流式传输 MEAN 堆栈时被调用 n 次



我有一个 MEAN 堆栈,当前端调用像/movies/KN3MJQR.mp4 这样的 url,

路由中的 get 块.js如下所示

app.get('/movie/:url', function(req, res) {
        try {
            var url = req.url.split('/')[2]
                res.sendfile(moviesFolder + url);
         #i want to add my logic for incrementing view count here. 
        } catch (e) {
            console.log(e);
        }
    });

我想添加逻辑以在为.mp4提出请求时增加每部电影的观看次数。我尝试在代码中注释的位置添加增量视图计数逻辑,如上所示,只是发现整个 get 方法在流式传输发生时被调用 n 次。如何处理此逻辑?

更新:代码检查与@rsp回答的相同

if(req.get('Range')===('bytes=0-')){
     console.log('first call');
}else{
     console.log('further call');
}

终结点可能会被多次命中,因为res.sendfile()支持范围,并且客户端可以多次下载部分数据。

您可以使用req.get('Range')检查相关标头,并查看它是第一部分还是最后一部分(取决于您是要计算每个开始的下载还是仅计算完成的下载)。

有关标头的详细信息,请参阅:

  • https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

最新更新