1

我有一个关于通过 NodeJS 服务器流式传输音频文件的问题。我正在使用以下代码:

var http = require('http');
var fs = require('fs');
var filePath = 'media/test.mp3';
var stat = fs.statSync(filePath);

http.createServer(function(request, response) {
    response.writeHead(200, {
        'Content-Type': 'audio/mpeg',
        'Content-Length': stat.size
    });
    fs.createReadStream(filePath).pipe(response);
})
.listen(3000);

当我...时它确实有效

但是当我...时它不起作用

通过不工作,我的意思是我可以在 Chrome devtools 中看到一个待处理的请求(“请求尚未完成!”),但流有时只启动不到一秒钟,有时它根本不启动。在 devtools 中,我可以看到只加载了 4 KB(在 localhost 上是 3.1 MB)。

为了启用从外部的访问,我在路由器上配置了端口转发,以便将对端口 3000 的请求转发到我计算机的内部 IP。

对于流媒体以外的其他事情,我的设置正在运行,例如,可以调用服务器上定义的 REST 路由。

编辑:

同时,我还尝试使用 PHP 而不是 NodeJS 进行流式传输。但它表现出完全相同的行为。

你们知道可能是什么原因吗?谢谢!

4

2 回答 2

0

当您尝试使用两种不同的代码库时,在路由器中设置端口转发似乎存在一些配置问题。

如果您只做测试,您可以使用localtunnellocalhost公开您的over the internet

很少有其他替代品也像ngrockforwardhq

希望能帮助到你。

于 2018-01-19T10:15:52.063 回答
0

昨天,我终于能够测试完全相同的设置,但使用不同的路由器(FritzBox 7320)——一切正常。所以我在家里使用的路由器(o2 HomeBox 6441)肯定有问题。

我认为最好的办法是在制造商委员会中获得一些支持。

无论如何感谢您的努力!

于 2018-01-27T09:51:04.527 回答