我正在構建一個代理服務器,它應該將數據從Shoutcast服務器轉發到客戶端。使用request
甚至節點的http
模塊失敗是由於缺少HTTP標頭:忽略節點中HTTP請求的頭部驗證
{ [Error: Parse Error] bytesParsed: 0, code: 'HPE_INVALID_CONSTANT' }
有問題的網址是:http://stream6.jungletrain.net:8000
做,捲曲頭請求我能夠驗證這一點:
$ curl -I http://stream6.jungletrain.net:8000
curl: (52) Empty reply from server
然而,該流正在與curl stream6.jungletrain.net:8000
測試工作正常。
有沒有一種方法來禁用request
頭驗證或節點的http
?這是我在測試它的代碼:
var express = require('express');
var request = require('request');
var app = express();
app.get('/', function (req, res) {
request('http://stream6.jungletrain.net:8000').pipe(res);
stream.pipe(res);
});
var server = app.listen(3000, function() {
console.log('Server started')
});
我知道這可以通過與net
滾動的實施來實現,也有icecast-stack
,但主觀上看到它只有正確實現Stream
接口的一半。
icecast是什麼類型的流?另外 - 什麼是'stream.pipe(res)'在你的例子中做? – brandonscript
建議您查看https://github.com/nodejitsu/node-http-proxy,查看是否已有基於節點的http代理實現。但個人而言,我不會爲代理服務器推薦nodejs,並且最好使用類似nginx的東西。 – sagie
這不是一個Icecast服務器。它是Shoutcast,它不符合HTTP,所以毫無疑問你有問題。 – TBR