2013-07-03 2 views
0

Je suis en train de créer un petit serveur nodejs qui prendra en charge les requêtes qui diffuseront l'audio. J'utilise actuellement 0.10.5 api. Je dois admettre que je suis un débutant à nodejs. Je ne suis pas sûr de savoir comment modifier ce code pour diffuser de l'audio avec succès.Nodejs mp3 en streaming

 var http = environment.http; 

     //Steaming Audio 
     var path = environment.path, 
      util = environment.util, 
      url = environment.url; 

     http.createServer(function (request, response) { 

      var queryData = url.parse(request.url, true).query; 
      window.console.log(queryData); 
      if (!queryData.hasOwnProperty('file')) { 
       response.writeHead(404, { 
        'Content-Type': 'text/plain' 
       }); 
       response.end(); 
       window.console.log('In here'); 

      } else { 
       window.console.log('In here2'); 
       var filePath = queryData.file; 
       var extension = self.getExtension(filePath); 
       var acceptedExtensions = ['mp3', 'wav', 'aiff']; 
       if ($.inArray(extension, acceptedExtensions) == -1) { 
        response.writeHead(404, { 
         'Content-Type': 'text/plain' 
        }); 
        response.end(); 
       } 

       var stat = environment.fs.statSync(filePath); 
       response.writeHead(200, { 
        'Content-Type': 'audio/mpeg', 
        'Content-Length': stat.size 
       }); 
       //window.console.log(filePath); 
       var readStream = environment.fs.createReadStream(filePath); 
       //var readable = new require('stream').Readable(); 
       readStream.pipe(response); 

      } 


     }).listen(10000); 

Quand je fais une demande http://localhost:10000/?file=/Users/acasanova/Music/Cass%20Beats/45th.mp3 Les spectacles de la console « Dans ici2 », puis « Ici ». J'essaie de comprendre pourquoi il semble remplir la demande deux fois et pourquoi l'audio n'est pas diffusé.

+0

On dirait que mon getExtension était le coupable, mais maintenant après ma première demande de flux audio fonctionne toutes les demandes subséquentes diffusent le même son. Pourquoi donc? – user2108258

Répondre

0

Une raison très simple pour laquelle vous obtenez la première réponse 'ici' est probablement parce que votre navigateur est à la recherche d'un fichier favicon, que votre application de noeud répond avec un 404. C'est ce que j'ai généralement observé lorsque vous essayez écrire une application simple dans node.js.

Pour savoir pourquoi l'audio n'est pas en streaming, je dois le regarder correctement. Mais je ne sais pas pourquoi vous essayez de définir une longueur de contenu comme node.js httpServer, car il prend en charge l'écriture de réponses groupées (Transfer-Encoding: chunked) par défaut (ce qui est ce dont vous avez besoin pour le streaming). Il y a quelque chose qui cloche manifestement dans cette approche, mais je vais devoir l'examiner correctement pour vous donner une réponse définitive.

Questions connexes