serverSocket'use strict'
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
var fs = require('fs');
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.sockets.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', function () {
console.log('A user disconnected');
});
socket.emit('message', 'Welcome');
socket.on('message', function all(message){
console.log(message);
socket.broadcast.emit('message', message);
});
let streamVideo = fs.createReadStream('/js/ControlPC/images/2.mp4');
streamVideo.on('data', (bufferVideo)=>{
//console.log(chunk);
socket.emit('streamVideo', bufferVideo);
})
});
io.on("err", (err)=>{
console.log(err.message);
})
http.listen(8000, () => {
console.log('listening on *:8000');
});
client
<!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
<script src = "/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('message', function(mes){
alert('server message: ' + mes);
});
function is (){
console.log("run")
socket.emit('message', "Hello all");
}
</script>
</head>
<body>
<p>Hello world</p>
<video src="/js/ControlPC/images/2.mp4" id="stream" controls width="auto" height="auto" autoplay muted></video>
<script>
/*
socket.on('streamVideo', function(bufferVideo){
let stream = document.getElementById('stream');
//stream.src = bufferVideo;
console.log(stream);
});
*/
let videoElement = document.createElement("video");
videoElement.setAttribute("id", 'stream2');
videoElement.setAttribute('src', '/js/ControlPC/images/1.mp4');
videoElement.setAttribute("width", "auto");
videoElement.setAttribute("height", "auto");
videoElement.setAttribute("controls", "controls");
videoElement.setAttribute("autoplay", "");
videoElement.setAttribute("muted", "");
document.body.append(videoElement);
</script>
<p><input type="button" onclick="is()" value="Poke the server" id="poke" /></p>
</body>
</html>
Здравствуйте, что-то не могу найти/додумать, помогите)
С сервера создается поток с помощью fs.createReadStream (ну это пока что), отправляю его, используя socket.io. На стороне клиента принимаю буфер, но никак не соображу, как его отправить в тег video html. Надеюсь ответ с примером будет достаточно простым)
Ну и до кучи, если я вручную вставляю тег video с атрибутами autoplay/muted, то видео автоматически запускается, а если я создаю тег с помощью js, то он автоматически не запускается - почему?