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

标签 javascript node.js websocket

我有 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));
 }

对应的 HTML:

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

问题

图像的大小或尺寸是套接字断开连接的原因吗?

websocket 消息有大小限制吗?

最佳答案

this Q&A 中所述,WebSocket 消息在协议(protocol)级别没有大小限制。然而,由于内存问题,大多数实现都有自己的消息大小限制。所以您应该查看您使用的 WebSocket 实现的文档。

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

关于javascript - websocket 客户端在发送大数据时断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286050/

相关文章:

python websockets,如何设置连接超时

javascript - 如何动态使用 angularjs ng-outlet

javascript - 更新到 Angular 8 后找不到模块 @angular/common/http/src/params

node.js - 是否有任何对象可以用于 node.js 的 Mapper 对象?

node.js - 使用自定义属性的 aurelia 自定义插件 - 找不到自定义属性

node.js - Nodemailer XOauth2 [错误 : unauthorized_client] when trying to get new access token

javascript - 异步加载的外部脚本,除非它被显式打开

javascript - 如何获取 knockoutjs foreach 内控件的值

websocket - 这些数字在 socket.io 有效负载中意味着什么?

javascript - Websocket - 在触发 onclose 之前发送一些内容