Node.js nodejs结束后写入-切换音频请求

Node.js nodejs结束后写入-切换音频请求,node.js,Node.js,我想知道如何使下面的脚本保持打开状态并继续编写 我需要它在广告结束时触发函数radio() 错误 node .\index.js advert advert Hurricane - Pain

我想知道如何使下面的脚本保持打开状态并继续编写

我需要它在广告结束时触发函数radio()

错误

 node .\index.js                                                       advert                                                                                                    advert
Hurricane - Pain in Your Eyes
https://storage.googleapis.com/ad-system/DRN1_Indie.drn1.com.mp3?=Player/
Hurricane - Pain in Your Eyes
http://stream.radiomedia.com.au:8000/stream?=Player/
internal/streams/legacy.js:57
      throw er; // Unhandled stream error in pipe.
      ^

Error [ERR_STREAM_WRITE_AFTER_END]: write after end
    at write_ (_http_outgoing.js:572:17)
    at ServerResponse.write (_http_outgoing.js:567:10)
    at Request.ondata (internal/streams/legacy.js:15:31)
    at Request.emit (events.js:198:13)
    at IncomingMessage.<anonymous> (C:\Users\russe\Documents\nodejs\node_modules\request\request.js:1080:12)
    at IncomingMessage.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at IncomingMessage.Readable.push (_stream_readable.js:224:10)
    at HTTPParser.parserOnBody (_http_common.js:122:22)
的默认行为是在读卡器结束时结束编写器

更改您的代码:

//请求(remoteUrl).pipe(res)
请求(remoteUrl).pipe(res,{end:false})
var http = require('http'),
    request = require('request');
    var icecast = require('icecast-stack');
    let remote = 'http://stream.radiomedia.com.au:8000/stream';
    var stream = icecast.createReadStream(remote);
    var remoteUrl = remote;
    var ad = 0;



http.createServer(function (req, res) {

    res.writeHead(200, {
        'Content-Type': 'audio/mpeg'
    });




    stream.on('connect', function() {
        console.error("Radio Stream connected!");
      });

     stream.on('metadata', function(metadata) {
        var title = icecast.parseMetadata(metadata).StreamTitle;
        if(title === title){
        console.error("advert");
        ad = 1;
        if(ad === 1)
        {

            let remote='https://storage.googleapis.com/ad-system/DRN1_Indie.drn1.com.mp3';
            remoteUrl = remote+"?=Player" + req.url;

               request.get(remoteUrl)
                    .on('response', response => {
                        // pipe response to res 
                    console.error(title);
                    console.error(remoteUrl);
                     // since response is an http.IncomingMessage

                     /*setTimeout(function(){
                        ad = 0;
                         radio();
                     },20000);*/
                     response.pipe(res);

                })

                .on("finish", response => { 
                    return radio();
                });


        }

        }
        else{
            console.error(title);

        }
    });

function radio(){
                    let remote='http://stream.radiomedia.com.au:8003/stream';
                     remoteUrl = remote+"?=Player" + req.url;
                     request.get(remoteUrl)
                            .on('response', response => {
                                // pipe response to res 
                            //console.error(title);
                            //console.error(remoteUrl);
                            // since response is an http.IncomingMessage
                            response.pipe(res);
                        });
}

  // http://somewhere.com/noo.bin
  remoteUrl = remote+"?=Player" + req.url;
  //console.error(remoteUrl);
  //stream.pipe(process.stdout);/


  request(remoteUrl).pipe(res)
}).listen(8080);