websocket客户端在发送大数据时断开连接
websocket client disconnects on sending large data
我有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消息有大小限制吗?
如本问答中所述;A、 WebSocket消息在协议级别没有大小限制。尽管如此,由于内存问题,大多数实现对消息大小都有自己的限制。因此,您应该查看您使用的WebSocket实现的文档。
顺便说一句,WebSocket协议允许在没有二进制到文本转换的情况下直接交换二进制消息,这会带来一些性能损失,并增加消息大小。
我找到了解决方案。这里的问题在于数据大小。Web套接字协议对消息大小有限制。在实施之前最好遵循RFC标准。此处解释rfc6455#第5.2节
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- websocket客户端在发送大数据时断开连接
- 使用节点JS连接和断开数据卡
- Socket.io 数据包在断开连接和重新连接之间丢失
- 为什么 php 在打印数据时在客户端断开连接时中止,否则不会
- Node.js聊天服务器,当另一个用户发送数据时,客户端断开连接
- 在angularjs中的特定位置删除并断开json中的数据
- 客户端是否有办法在套接字断开连接时发送服务器数据?
- Parse.com文件不更新,导致从数据浏览器断开链接
- JavaScript ISO8601 3.5.2 时间(24 小时)数据类型与日历断开连接
- jQuery 数据表断开页面上的链接