Прямая трансляция аудиофайла с сервера NodeJS на несколько клиентов

#javascript #node.js #http #websocket

Вопрос:

У меня есть аудиофайл, расположенный на моем сервере Node Js, и я хочу иметь возможность передавать его различным клиентам по Http. Потоковая передача должна быть в прямом эфире, то есть отметка времени, с которой клиент начинает слышать звук, зависит от времени выполнения запроса (как если бы он слушал радио в прямом эфире).

В настоящее время я могу обслуживать весь аудиофайл по протоколу http с помощью экспресс-сервера :

 const express = require("express")
const app = express()
const fs = require("fs")

const port = 3000
app.get("/", (req, res) => {
  res.writeHead(200, { "Content-Type": "audio/mp3" })
  fs.createReadStream("./song.mp3").pipe(res)
})

app.listen(port, (err) => {
  if (!err) console.log("server started running on:"   port)
  else console.log("unable to start server")
})
 

Это позволяет мне слушать всю песню целиком всякий раз, когда я делаю запрос. Но что мне на самом деле нужно, так это иметь возможность транслировать его в прямом эфире, как я объяснил.
Какому подходу я должен следовать, чтобы реализовать это ? лучше ли использовать сокеты вместо http ?

Комментарии:

1. Он передает ваше видео в потоковом режиме, и, как только ваш сервер получит запрос, он будет передавать его клиенту. Сокеты можно использовать, если вы хотите обновить клиент при запуске трансляции. Вы можете отправлять прямую трансляцию пользователю, если вы создаете ее на своем сервере, используя Node.js и сокеты для обновления всех пользователей, подключенных к сокету.