Почему крашится websocket?

Как можно отправить файл через websocket json полем? Когда делаю так, ws крашится:
$("#sendBtn").click(function () {

        var file = $("#preview_img")[0].files[0];
        var reader = new FileReader();

        reader.onloadend = function (event) {
            var buffer =  event.target.result;
            w.send(JSON.stringify({
                title: articleTitle.val().toString(),
                content: CKEDITOR.instances['editor'].getData(),
                preview_img: buffer,
                img_name: file.name
            }));
            console.log(reader.error)
        };
        reader.readAsBinaryString(file);
    });


вот так работает, но только для файлов от 1кб и меньше, как можно исправить?
function ArrayBufferToBase64(buff) {
        var alph = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
            enc = "",
            n, p, bits;
        d = new Uint8Array(buff);
        var len = buff.byteLength * 8;
        for (var offset = 0; offset < len; offset += 6) {
            n = (offset / 8) | 0;
            p = offset % 8;
            bits = ((d[n] || 0) << p) >> 2;
            if (p > 2) {
                bits |= (d[n + 1] || 0) >> (10 - p)
            }
            enc += alph.charAt(bits & 63);
        }
        enc += (p == 4) ? '=' : (p == 6) ? '==' : '';
        return enc;
    }

    $("#sendBtn").click(function () {

        var file = $("#preview_img")[0].files[0];
        var reader = new FileReader();

        reader.onloadend = function (event) {
            var buffer = ArrayBufferToBase64(event.target.result);
            console.log(buffer)
            w.send(JSON.stringify({
                title: articleTitle.val().toString(),
                content: CKEDITOR.instances['editor'].getData(),
                preview_img: buffer,
                img_name: file.name
            }));
        };
        reader.readAsArrayBuffer(file);
    });
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
21 мая 2024, в 22:05
90000 руб./за проект
21 мая 2024, в 21:56
10000 руб./за проект