从外部访问时,来自 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);
它确实在我...
时有效
- 运行 本地:http://localhost:3000 或
- 运行 它在同一网络中的不同机器上:http://192.168.1.42:3000.
但是当我...
时不工作
- 运行 它来自外部,例如呼叫 http://my-public-ip:3000 或
- 使用 DynDNS 服务:http://my-dyndns-provider.com: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)有问题。
我认为最好的办法是尝试在制造商委员会中获得一些支持。
谢谢你的努力!
我对通过 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);
它确实在我...
时有效- 运行 本地:http://localhost:3000 或
- 运行 它在同一网络中的不同机器上:http://192.168.1.42:3000.
但是当我...
时不工作- 运行 它来自外部,例如呼叫 http://my-public-ip:3000 或
- 使用 DynDNS 服务:http://my-dyndns-provider.com: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)有问题。
我认为最好的办法是尝试在制造商委员会中获得一些支持。
谢谢你的努力!