Configuration de l’environnement
Commencez par créer un dossier pour votre projet et placez-y le fichier audio que vous souhaitez diffuser, par exemple, « music.mp3 ». Assurez-vous d’avoir Node.js installé et le projet initialisé (npm init).
Cloner le dépôt :
git clone https://github.com/kodaizen/node-streaming.git
Création du serveur
Créez un fichier JavaScript, par exemple « stream-server.js », et ajoutez-y le code suivant :
var http = require("http"); const fs = require("fs"); http .createServer(function (req, res) { const filePath = "./music.mp3"; const range = req.headers.range; const fileStat = fs.statSync(filePath); if (!range) { const fileStream = fs.createReadStream(filePath); res.writeHead(206, { "Content-Type": "audio/mpeg", "Content-Length": fileStat.size, }); fileStream.pipe(res); } else { const parts = range.replace(/bytes=/, "").split("-"); const start = parseInt(parts[0], 10); const end = parts[1] ? parseInt(parts[1], 10) : fileStat.size - 1; if (start >= fileStat.size) { res.writeHead(416, { "Content-Type": "text/html" }); res.end( "Requested range not satisfiable\n" + start + " >= " + fileStat.size ); } const chunksize = end - start + 1; const fileStream = fs.createReadStream(filePath, { start, end }); res.writeHead(206, { "Content-Range": `bytes ${start}-${end}/${fileStat.size}`, "Accept-Ranges": "bytes", "Content-Length": chunksize, "Content-Type": "audio/mpeg", }); fileStream.pipe(res); } }) .listen(3000); console.log("Serveur de streaming audio en cours d'exécution sur le port 3000");
Dans cet exemple, le serveur utilise le header « Range » pour déterminer la portion spécifique du fichier audio à renvoyer au client lors du streaming, en fonction des informations de plage (start et end) fournies dans ce header. Si le header « Range » n’est pas présent, le serveur renvoie le fichier audio dans son intégralité.
Exécution du serveur
node stream-server.js
Ouvrez un navigateur et accédez à l’URL suivante : http://localhost:3000. Vous devriez pouvoir écouter le fichier audio en streaming.