Проблема WebRTC с передачей файлов в производственном приложении

Здравствуйте! Я занимаюсь разработкой приложения для передачи файлов на основе WebRTC. Я развернул приложение онлайн с помощью Heroku. Но, похоже, есть проблема с передачей файлов, особенно на принимающей стороне, которую я не смог выяснить. Файл передается и принимается успешно, когда выполняется на локальном хосте, но существует проблема с приемом файла, когда выполняется в рабочей среде. Используется браузер Google Chrome, если это поможет.

Вот код приема файла:

function dataChannelStateChanged() {
    if (dataChannel.readyState === 'open') {
        console.log("Data Channel open");
        dataChannel.onmessage = receiveDataChannelMessage;
    }
}

function receiveDataChannel(event) {
    console.log("Receiving a data channel");
    dataChannel = event.channel;
    dataChannel.onmessage = receiveDataChannelMessage;
}

function receiveDataChannelMessage(event) {
    console.log("From DataChannel: " + event.data);
    if (fileTransferring) {
        //Now here is the file handling code:
        fileBuffer.push(event.data);
        fileSize += event.data.byteLength;
        fileProgress.value = fileSize;

        //Provide link to downloadable file when complete
        if (fileSize === receivedFileSize) {
            var received = new window.Blob(fileBuffer);
            fileBuffer = [];

            downloadLink.href = URL.createObjectURL(received);
            downloadLink.download = receivedFileName;
            downloadLink.appendChild(document.createTextNode(receivedFileName + "(" + fileSize + ") bytes"));
            fileTransferring = false;

            //Also put the file in the text chat area
            var linkTag = document.createElement('a');
            linkTag.href = URL.createObjectURL(received);
            linkTag.download = receivedFileName;
            linkTag.appendChild(document.createTextNode(receivedFileName));
            var div = document.createElement('div');
            div.className = 'message-out';
            div.appendChild(linkTag);
            messageHolder.appendChild(div);
        }
    }
    else {
        appendChatMessage(event.data, 'message-out');
    }
}

На следующем рисунке показана проблема, с которой я сталкиваюсь при получении файла:

Принимающая сторона

Любое руководство будет высоко ценится.

1 ответ

WEBRTC основан на UDP, это означает, что нет никакой гарантии, что ваша последовательность передачи данных будет «по порядку» или успешно

вместо этого используйте «webSocket» или простой «http-запрос».

==============

ОБНОВЛЕНИЕ: см. первый комментарий

Другие вопросы по тегам