为了支持基于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类?