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.
