websocket传输数据大小限制_websocket 发送字符串数据上限是多少
匿名用户
1级
2017-06-07 回答
网上很多关于websocket发送数据大于大于0xFFFF(65535)的处理都是一句话“暂不处理”!!!!!所以特写此文。
int WSSession::safeSendFrame(uint8_t *buffer, size_t bufferSize, enum wsFrameType frameType)
{
// 发数据到浏览器需要封装一个websocket的头,但wsMakeFrame()函数e5a48de588b6e79fa5e9819331333363383935存在内存拷贝,会消耗性能,
// 所以这里分两步发:1、发websocket头,2、发实际数据。
// 构造websocket头
uint8_t wsMakeFrameHead[20] = {0};
size_t FrameHeadLen = 0;
assert(frameType < 0x10);
if (bufferSize > 0)
assert(buffer);
wsMakeFrameHead[0] = 0x80 | frameType;
if (bufferSize <= 125) {
wsMakeFrameHead[1] = bufferSize;
FrameHeadLen = 2;
} else if (bufferSize <= 0xFFFF) {
wsMakeFrameHead[1] = 126;
uint16_t payloadLength16b = htons(bufferSize);
memcpy(&wsMakeFrameHead[2], &payloadLength16b, 2);
FrameHeadLen = 4;
} else {
// assert(dataLength <= 0xFFFF);
//implementation for 64bit systems
/*wsMakeFrameHead[1] = 127;
uint64_t lenHigh32b = htonl((bufferSize>>32)& 0xFFFFFFFF);
uint64_t lenLow32b = ((uint64_t)htonl(bufferSize&0xFFFFFFFF)) << 32;
uint64_t payloadLength64b = lenHigh32b | lenLow32b;
memcpy(&wsMakeFrameHead[2], &payloadLength64b, 8);
FrameHeadLen = 10;*/
wsMakeFrameHead[1] = 127;
wsMakeFrameHead[2] = 0;
wsMakeFrameHead[3] = 0;
wsMakeFrameHead[4] = 0;
wsMakeFrameHead[5] = 0;
wsMakeFrameHead[6] = (byte)(bufferSize >>24);
wsMakeFrameHead[7] = (byte)(bufferSize >>16);
wsMakeFrameHead[8] = (byte)(bufferSize >>8);
wsMakeFrameHead[9] = (byte)(bufferSize & 0xFF);
FrameHeadLen = 10;
}
// 发websocket头
int nRetH = safeSend(wsMakeFrameHead, FrameHeadLen);
// 发实际数据
int nRetD = safeSend(buffer, bufferSize);
if (nRetH != EXIT_SUCCESS || nRetD != EXIT_SUCCESS)
return EXIT_FAILURE;
return EXIT_SUCCESS;
}
websocket传输数据大小限制_websocket 发送字符串数据上限是多少相关推荐
- websocket传输数据大小限制_WebSocket基础知识笔记
一.为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有 ...
- websocket传输数据大小限制_websocket设置传输大小
tomcat中有提到: If the application does not define a MessageHandler.Partial for incoming text messages, ...
- websocket传输数据大小限制_踩踏websocket:发送缓冲区大小超过允许的限制
在客户端我使用Stomp进行websocket连接,服务器端使用 Spring 4 客户端我做了配置 var socket = new SockJS(urlBase + "/" + ...
- C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)
前言 这几天加紧赶工写服务器端的程序,所有系列文章更新较慢,见谅: ) 注意 本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码下载,非常抱歉!!但是请大家放心,核心.实现以及其他能够贴 ...
- pythonrequests发送数据_在python中使用requests 模拟浏览器发送请求数据的方法
在python中使用requests 模拟浏览器发送请求数据的方法 如下所示: import requests url='http://####' proxy={'http':'http://#### ...
- qt定时连续发送udp数据包_TCP和UDP
首先强调一点,TCP/IP协议是一个协议簇.里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TCP.IP协议是两个很重要的协议,就用他两命名了. 两个协议的区别实际使用时 ...
- Django,Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传
JSON JSON指的是JavaScript对象方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON具有自我i描述,更易理解 ...
- python发送json数据_在Websockets上发送JSON
我有一个简单的Python tornado Websockets服务器,从JavaScript客户端接收消息.我正在尝试发送JSON数据,我找到的唯一解决方案是将JSON对象转换成字符串JSON,发送 ...
- Android客户端通过TCP接收服务器端发送的数据
引言 因为我确实不懂TCP通信这一块儿,最近项目中要实现客户端接收服务器端发送过来的数据(这个数据是int型的,范围是0~360,而且服务器端用C语言写的,每一秒发送一次,客户端只需要不断接收就好了) ...
最新文章
- things to be done
- ITK:计算两个图像之间的均方度量值
- Liferay7 BPM门户开发之4: Activiti事件处理和监听Event handlers
- 七代处理器装win7_为啥新电脑没法装windows7系统?解决方法总会有的
- Linux下的硬件驱动——USB设备(下)
- FISCO BCOS PBFT是什么 基础流程
- java excel 表头_Java如何生成excel的表头可变的示例代码
- java课程设计模拟科学计算器_JAVA课程设计科学计算器
- 物料移动类型和后勤自动科目设置-转
- 事务的隔离级别和锁的实现方式
- 【UI设计】零基础带你入门UI设计
- 简单区分单射、满射与双射
- Python写的现金管理程序
- 本地php开发环境出现 cURL error 60
- 公众号榜单 | 2020·8月公众号原创排行榜重磅发布
- STM32开启和关闭总中断的方法
- H.264视频编码推荐的分辨率和码率配置表
- 呼死你泛滥 安全联盟提醒网民远离欺诈
- 宝尚12月25日期权操作策略:以高抛低吸为主
- 自己的Flash作品(1)截图