Я хочу передать аудио с сервера NodeJS в клиентский браузер, используя socket.io и socket.io-stream, и я сделал это успешно, и у меня есть только одна проблема. Прежде всего, это сервер кодов. js
const express = require("express");
const app = express();
const server = require("http").Server(app);
const port = process.env.port || 8080;
const path = require("path");
const fs = require("fs");
const io = require("socket.io")(server);
const ss = require("socket.io-stream");
app.use(express.static(path.join(__dirname, "public")));
server.listen(port, () => {
console.log(`Server listening on ${port}`);
});
io.on("connection", socket => {
socket.emit("start", { hello: "world!" });
socket.on("stream", data => {
let stream = ss.createStream();
let filename = path.join(__dirname, `/clips/Wegz.mp3`);
ss(socket).emit("audio-stream", stream, { name: filename });
fs.createReadStream(filename).pipe(stream);
});
});
клиент. js
var socket = io("http://localhost:" + window.location.port);
var audio = document.getElementById("audio");
socket.on("start", function(data) {
socket.emit("stream", { Data: "you can send any data back" });
ss(socket).on("audio-stream", function(stream, data) {
let parts = [];
stream.on("data", chunk => {
parts.push(chunk);
});
stream.on("end", function() {
console.log(i);
audio.src = URL.createObjectURL(new Blob(parts));
audio.play();
});
});
});
проблема здесь в том, что я воспроизводю звук после того, как все фрагменты будут выдвинуты к списку, НО я хочу одновременно воспроизводить аудио по частям, не дожидаясь нажатия всех частей. Я надеюсь, что разъяснил свой вопрос, и любая помощь будет оценена.