Bina aplikasi penstriman audio yang cekap menggunakan Webmen
Dengan populariti Internet dan peningkatan lebar jalur, aplikasi penstriman audio menjadi semakin popular. Banyak syarikat dan individu sedang membangun dan menyediakan pelbagai perkhidmatan penstriman audio, seperti muzik, podcast, radio dalam talian, dsb. Apabila membina aplikasi ini, kita perlu mempertimbangkan faktor seperti pengalaman pengguna, prestasi dan keselamatan. Artikel ini menerangkan cara menggunakan Webmen untuk membina aplikasi penstriman audio yang cekap, bersama-sama dengan beberapa contoh kod.
Webmen ialah rangka kerja web berasaskan Node.js yang menyediakan set alat dan perpustakaan yang berkuasa untuk membina aplikasi web yang cekap. Ia mengendalikan permintaan pelanggan secara tak segerak dan tidak menyekat dan boleh mengendalikan sejumlah besar sambungan serentak dengan berkesan. Ini sangat penting untuk aplikasi penstriman audio, yang perlu menghantar dan memproses sejumlah besar data audio dalam masa nyata.
Pertama, kita perlu memasang Node.js dan Webmen. Memasang Node.js adalah sangat mudah, cuma muat turun pakej pemasangan yang sesuai untuk sistem pengendalian anda dari tapak web rasmi dan ikut arahan untuk memasangnya. Selepas pemasangan selesai, kita boleh menggunakan npm (Pengurus Pakej Node) untuk memasang Webmen. Jalankan arahan berikut dalam terminal atau baris arahan untuk memasang Webmen:
npm install webmen
Setelah pemasangan selesai, kita boleh mencipta aplikasi Webmen baharu. Jalankan arahan berikut dalam terminal atau baris arahan:
webmen create myapp cd myapp
Ini akan mencipta aplikasi Webmen baharu bernama myapp dalam direktori semasa dan masukkan direktori tersebut.
Seterusnya, kita perlu membuat laluan untuk mengendalikan permintaan penstriman audio. Cipta fail baharu dalam direktori myapp, namakannya audio.js dan tampal kod berikut ke dalam fail:
const webmen = require('webmen'); const fs = require('fs'); exports.stream = function (req, res) { const filename = 'path_to_audio_file'; // 替换为音频文件的路径 const stats = fs.statSync(filename); const range = req.headers.range; const fileSize = stats.size; const chunkSize = 10 ** 6; // 每个数据块的大小为1MB const start = Number(range.replace(/D/g, '')); const end = Math.min(start + chunkSize, fileSize - 1); const contentLength = end - start + 1; const headers = { 'Content-Range': `bytes ${start}-${end}/${fileSize}`, 'Accept-Ranges': 'bytes', 'Content-Length': contentLength, 'Content-Type': 'audio/mpeg', }; res.writeHead(206, headers); const stream = fs.createReadStream(filename, { start, end }); stream.on('open', function () { stream.pipe(res); }); stream.on('error', function (err) { res.end(err); }); };
Laluan ini mengendalikan permintaan penstriman audio. Ia mendapat parameter julat daripada pengepala permintaan dan menggunakannya untuk menghantar data audio dalam ketulan. Ia kemudian menggunakan modul fs untuk membaca fail audio dan menstrim ketulan data kepada pelanggan. Anda perlu menggantikan path_to_audio_file
dengan laluan sebenar fail audio. path_to_audio_file
为音频文件的真实路径。
现在,我们需要在应用程序中注册这个路由。在myapp目录下打开app.js文件,并将以下代码添加到文件的底部:
const audio = require('./audio'); app.get('/stream', audio.stream);
这样,我们就成功地将路由注册到了我们的应用程序中。我们可以通过向http://localhost:3000/stream
发起请求来测试这个路由。
最后,我们需要启动应用程序。在终端或命令行中运行以下命令:
npm start
这将会启动应用程序,并将监听在3000端口。现在,我们可以使用任何支持音频流媒体的播放器来访问http://localhost:3000/stream
rrreee
Dengan cara ini, kami telah berjaya mendaftarkan laluan ke dalam aplikasi kami. Kami boleh menguji laluan ini dengan membuat permintaan kepadahttp://localhost:3000/stream
. Akhir sekali, kami perlu melancarkan aplikasi. Jalankan arahan berikut dalam terminal atau baris arahan: http://localhost:3000/stream
menggunakan mana-mana pemain yang menyokong penstriman audio dan audio harus dimainkan dengan betul. Atas ialah kandungan terperinci Bina aplikasi penstriman audio yang cekap menggunakan Webman. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!