爲了支持基於HTTP的協議(Icecast Source Protocol),我需要能夠使用來自Node.js的http.Server的套接字,一旦HTTP請求是完了。示例請求如下所示:在HTTP請求/響應Node.js服務器後保持套接字打開
Client->Server: GET/HTTP/1.0
Client->Server: Some-Headers:header_value
Client->Server:
Server->Client: HTTP/1.0 200 OK
Server->Client:
Client->Server: <insert stream of binary data here>
這是爲了支持互聯網廣播流的來源,在這種情況下,流數據的來源是客戶端。
有什麼辦法可以使用Node.js的內置http.Server?我曾經嘗試這樣做:
this.server = http.createServer(function (req, res) {
console.log('connection!');
res.writeHead(200, {test: 'woot!'});
res.write('test');
res.write('test2');
req.connection.on('data', function (data) {
console.log(data);
});
}).listen(1337, '127.0.0.1');
如果我telnet到端口1337和提出請求,我能看到的是什麼我鍵入服務器控制檯窗口中,但隨後的服務器關閉連接的第一對夫婦的字符。理想情況下,我會保持該套接字無限期地打開,並且一旦發出初始請求,就將HTTP部分從循環中取出。
這可能與股票http.Server類?