从外部访问时,来自 NodeJS 服务器的流式传输不起作用

Streaming from NodeJS server not working when access from outside

我对通过 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 中看到一个待处理的请求("request is not finished yet!"),但流有时只以更少的价格启动超过一秒钟,有时它根本不启动。在 devtools 中我可以看到只有 4 KB 被加载(在本地主机上它是 3.1 MB)。

为了能够从外部访问,我在路由器上配置了端口转发,这样到端口 3000 的请求将被转发到我计算机的内部 IP。

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

编辑:

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

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

在路由器中设置 端口转发 时看起来有些 配置 问题,因为您已尝试使用两个不同的代码库。

如果您只是为了测试,您可以使用 localtunnel 将您的 localhost 公开 over the internet

很少有其他选择也像 ngrock or forwardhq

希望对您有所帮助。

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

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

谢谢你的努力!