代码之家  ›  专栏  ›  技术社区  ›  pschild

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

  •  1
  • pschild  · 技术社区  · 7 年前

    我有一个关于通过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中,我可以看到只加载了4 KB(在localhost上是3.1 MB)。

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

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

    编辑:

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

    你们知道原因是什么吗? 非常感谢。

    2 回复  |  直到 7 年前
        1
  •  0
  •   vinit payal    7 年前

    看起来像是 配置 端口转发 在路由器中使用两种不同的代码库。

    如果您只做测试,您可以使用 localtunnel 暴露您的 localhost 公开 over the internet .

    几乎没有其他的选择像 ngrock forwardhq .

    希望有帮助。

        2
  •  0
  •   pschild    7 年前

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

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

    无论如何,谢谢你的努力!

    推荐文章