@Andrei1penguin1

Как отправить несколько файлов по websocket?

Доброго времени суток, есть задача отправлять сообщение на сервер, где может быть несколько файлов
Соединение в чате используется через сокеты
Соответственно я в небольшом замешательстве, потому что:
Нужно отправить текстовое сообщение вместе со всеми файлами, а ни одна знакомая мне возможность веб-сокета (ни socket.send(), ни socket.send(JSON.stringify())) не позволяет этого добиться
Ясное тело, что можно сначала передать текст:
socket.send(JSON.stringify({text: "text"}));
А затем файлы (да и то непонятно, как все сразу), поэтому циклом:
socket.binaryType = "blob";
for (let i=0; i<files.length; i++) {
    socket.send(files[i]);
}

В голову приходит нечто подобное:
var all_files = [];
for (let i=0; i<files.length; i++) {
    var file = some_func_get_base64(files[i])
    all_files.push(file);
}
socket.send(JSON.stringify({text: "text", files: all_files}));

Но ведь это похоже на полный бред
Подскажите пожалуйста, как грамотно решить такую задачу
  • Вопрос задан
  • 1219 просмотров
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Насколько я знаю по сокетам можно гнать только текст, вам нужно преобразовать файл в base64 и уже его отправлять. Если данный вариант не устраивает, то тогда отправляйте файл обычным POST-запросом на сервер, чтобы ваш сервер полученные файлы складывал в какую-то папку и отдавал в ответ путь до этого файла. Далее, после загрузки файла в папку просто передаете по сокету путь до файла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 23:03
1 руб./за проект
23 нояб. 2024, в 22:38
2500 руб./за проект
23 нояб. 2024, в 22:03
3000 руб./за проект