暂停/播放和停止节点stream

我正在创build一个覆盆子pi的基本audio播放器。 我有一个基本的MP3播放器在客户端的基本控制…播放/暂停和停止。 当用户点击播放时,套接字发送一个mp3 url到服务器,该服务器正在使用捕获url的节点并在扬声器上播放。 在使stream在服务器上暂停/继续播放时遇到问题。 以下是我的代码

var app = require("express")(); var http = require('http').Server(app); var io = require("socket.io")(http); var lame = require('lame'); var request = require('request'); var Speaker = require('speaker'); io.on('connection', function(socket){ var playing; var decoder = new lame.Decoder(); playing = socket.on('play', function(data){ var stream; stream = request(data.songurl); decoder.on('format', function(){ mpg123Util.setVolume(decoder.mh, 1.0) }) return stream; stream.pipe(decoder).pipe(speaker); setTimeout(function(){ console.log('pausing') stream.unpipe(decoder).unpipe(speaker); }, 10000); stream.on('end', function(){ console.log('ended') stream.unpipe(decoder).unpipe(speaker); }) }) socket.on('pause', function(data){ // console.log(playing) playing.unpipe(decoder).unpipe(speaker); }) 

当我点击暂停button时,出现错误“无法读取未定义的属性”“pipe道”,因为当时还没有定义“stream”。 有没有一种方法来检测是否有一个现有的stream和如何暂停/恢复该stream?