websocket 客户端在发送大数据时断开连接

Han*_*Han 5 javascript websocket node.js

我有 nodejs websocket 服务器和客户端来发送图像。问题是客户端在发送高分辨率 [即 512 x 512 或更高] 或大尺寸 [即接近 > 50KB] 图像时自动断开连接。

注意:尺寸和尺寸较小的可以发送。

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));
 }
Run Code Online (Sandbox Code Playgroud)

对应的 HTML:

 <button onclick="sendImage()">Send Image</button>
 <img id="image" src="img/image.png" alt="" />
Run Code Online (Sandbox Code Playgroud)

图像的大小或尺寸是插座断开的原因吗?

websocket 消息有任何大小限制吗?

Han*_*Han 4

我找到了解决方案。这里的问题在于数据大小。Web 套接字协议对消息大小有其限制。在实施之前最好遵循 RFC 标准。此处解释rfc6455#section-5.2