Всем доброго дня, стоит такая задача сделать не большой сервис который будет принимать видео файлы по websocket, размер файла до 10 гб. Я реализовал передачу файлов от клиента к серверу но файлы приходят не полные, к примеру вместо 159 кб пришло 4.9 кб
Сервер
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
try:
filename = 'example.mp4'
file = await websocket.receive_bytes()
with open(f'test_video/{filename}', 'wb') as f:
f.write(file)
Клиент
mounted(){
let sock = new WebSocket("ws://localhost:5000/ws");
sock.binaryType = "arraybuffer";
this.sock = sock;
sock.onopen = function(){
console.log('Сойдинения установленно')
}
},
methods:{
shareFile(metadata, buffer, sock){
sock.send(JSON.stringify(metadata))
let state = true;
while (state) {
let chunk = buffer.slice(0, metadata.buffer_size);
buffer = buffer.slice(metadata.buffer_size, buffer.length);
if (chunk.length > 0){
sock.send(chunk);
}
else
state = false;
}
},
videoUpload(){
let uploadeVidio = this.$refs.file.files[0];
let reader = new FileReader();
reader.onload = ()=>{
let buffer = new Uint8Array(reader.result);
this.shareFile({
filename: uploadeVidio.name,
total_buffer_size: buffer.length,
buffer_size: 2048
},
buffer, this.sock);
}
reader.readAsArrayBuffer(uploadeVidio)
},
}