Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript websocket客户端在发送大数据时断开连接_Javascript_Node.js_Websocket - Fatal编程技术网

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

Javascript websocket客户端在发送大数据时断开连接,javascript,node.js,websocket,Javascript,Node.js,Websocket,我正在使用nodejswebsocket服务器和客户端发送图像。问题是,在发送高分辨率[即512 x 512或更高]或大尺寸[即几乎>50KB]图像时,客户端会自动断开连接 注意:使用较小的尺寸和大小,它可以发送 function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; va

我正在使用nodejswebsocket服务器和客户端发送图像。问题是,在发送高分辨率[即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));
 }
对应的HTML:

 <button onclick="sendImage()">Send Image</button>
 <img id="image" src="img/image.png" alt="" />
发送图像
问题

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

websocket消息是否有大小限制?

如中所述,websocket消息在协议级别没有大小限制。然而,由于内存问题,大多数实现对消息大小有其自身的限制。因此,您应该查看您使用的WebSocket实现的文档


顺便说一句,WebSocket协议允许直接交换二进制消息,而无需进行二进制到文本的转换,这会降低性能并增加消息大小。

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

什么是数据限制?例如Json。