快进和快退在Node.js服务器中不起作用

时间:2018-12-27 04:55:54

标签: javascript html node.js

我正在运行nodejs服务器来建立视频注释工具。但是问题是我无法运行快进和快退功能。这是我的node-js server.js文件:

视频文件位于html中,而不位于server.js中

var http = require('http');
var fs = require('fs');
var path = require('path');

http.createServer(function (request, response) {
    console.log('request starting...');

    var filePath = '.' + request.url;
    if (filePath == './')
        filePath = './dragnew_popup.html';

    var extname = path.extname(filePath);
    var contentType = 'text/html';
    switch (extname) {
        case '.js':
            contentType = 'text/javascript';
            break;
        case '.css':
            contentType = 'text/css';
            break;
        case '.json':
            contentType = 'application/json';
            break;
        case '.png':
            contentType = 'image/png';
            break;      
        case '.mp4':
            contentType = 'video/mp4';
            break;
    }

    fs.readFile(filePath, function(error, content) {
        if (error) {
            if(error.code == 'ENOENT'){
                fs.readFile('./404.html', function(error, content) {
                    response.writeHead(200, { 'Content-Type': contentType });
                    response.end(content, 'utf-8');
                });
            }
            else {
                response.writeHead(500);
                response.end('Sorry, check with the site admin for error: '+error.code+' ..\n');
                response.end(); 
            }
        }
        else {
            response.writeHead(200, { 'Content-Type': contentType });
            response.end(content, 'utf-8');
        }
     });

 }).listen(8080);
 console.log('Server running at http://127.0.0.1:8080/');

当我运行此server.js时,我无法使用快进和快退,但只能播放和暂停。

那么我要在哪里进行更改,以便可以使用快进和快退?

2 个答案:

答案 0 :(得分:0)

这是因为服务器需要支持范围请求,以便浏览器可以从所需位置开始获取内容。

您可以从此mdn文档Range requests开始,以正确处理范围标头,并使用正确的标头和状态代码响应请求。

我找到了一个页面video streaming with nodejs,可以帮助您从头开始构建简单的服务器。

但是,如果您不需要太多开销,那么经过测试的有关静态文件服务器的npm模块可能会更健壮。

答案 1 :(得分:0)

我又创建了一个用于视频的node.js服务器,并将其保留在3000端口中。还有一台服务器来运行我的.html文件。在此html文件中,我保留了http:// ip-address:8080 / video>。

因此,每当我请求html运行视频时,它将向视频服务器发送播放请求,并且每当我请求快进和快退时,它将向视频服务器发送请求,而html服务器将获得相同的答复。

这就是我想要的。

感谢大家给我宝贵的时间。