2015-03-26 3 views
3

У меня есть сервер и клиент узла nodejs для отправки изображений. Проблема заключается в автоматическом отключении клиента при отправке изображений с высоким разрешением [i.e 512 x 512 или более] или большого размера (почти> 50 КБ).клиент websocket отключается при отправке больших данных

Примечание: с меньшими размерами и размером, которые он может отправить.

function getBase64Image(img) { 
    var canvas = document.createElement("canvas"); 
    canvas.width = img.width; 
    canvas.height = img.height; 

    var ctx = canvas.getContext("2d"); 
    ctx.drawImage(img, 0, 0); 

    var dataURL = canvas.toDataURL("image/png"); 
    return dataURL; 
} 

function sendImage(){ 
    var img = getBase64Image(document.getElementById("image")); 
    var JSONimg = { 
    ' type' : 'img', 
    'data' : img, 
    } 
ws.send(JSON.stringify(JSONimg)); 
} 

корреспондент HTML:

<button onclick="sendImage()">Send Image</button> 
<img id="image" src="img/image.png" alt="" /> 

Вопрос

Является ли размер или размер изображения является причиной для сокета отключения?

Любое ограничение по размеру для сообщений в веб-виде?

ответ

3

Я нашел решение этой проблемы. Проблема здесь в том, что размер данных. Протокол веб-сокета имеет ограничение на размер сообщения. Лучше следовать стандартам RFC перед реализацией. Разъясняется здесь rfc6455#section-5.2

+0

Каковы ограничения данных? например, Json. –

2

Как указано в this Q&A, сообщение WebSocket не имеет ограничений по размеру на уровне протокола. Тем не менее, большая часть реализации имеет свои ограничения на размер сообщений из-за проблем с памятью. Поэтому вы должны посмотреть документацию по внедрению WebSocket, которую вы используете.

BTW, протокол WebSocket позволяет обмениваться двоичным сообщением напрямую без преобразования двоичного кода в текст, которое имеет некоторое ограничение производительности, а также увеличивает размер сообщения.

Смежные вопросы