我希望能够代理远程icecast流到客户端。在过去的几天里,我一直在尝试,但没有成功。
使用情况:
能够从
我的解决方案:
为了解决CORS问题,我试图编写一个小型代理,将请求传输到特定的流并在任何其他情况下返回静态内容。以下是我的代码:
欢迎提出任何建议!
使用情况:
能够从
<audio>
标签的src
中提取分析器数据而不会遇到CORS问题。我的解决方案:
为了解决CORS问题,我试图编写一个小型代理,将请求传输到特定的流并在任何其他情况下返回静态内容。以下是我的代码:
require('dotenv').config();
const http = require('http');
const express = require('express');
const app = express();
const PORT = process.env.PORT || 4000;
let target = 'http://direct.fipradio.fr/live/fip-midfi.mp3';
// figure out 'real' target if the server returns a 302 (redirect)
http.get(target, resp => {
if(resp.statusCode == 302) {
target = resp.headers.location;
}
});
app.use(express.static('dist'));
app.get('/api', (req, res) => {
http.get(target, audioFile => {
res.set(audioFile.headers);
audioFile.addListener('data', (chunk) => {
res.write(chunk);
});
audioFile.addListener('end', () => {
res.end();
});
}).on('error', err => {
console.error(err);
});
});
app.listen(PORT);
问题
客户端接收到代理的响应,但卡在了60kb的数据上,随后的数据块没有接收到,尽管已经被代理接收:
![enter image description here](https://istack.dev59.com/tXcJu.webp)
![enter image description here](https://istack.dev59.com/JFrlq.webp)