聊聊websocket opcode中的text / binary模式

webscoket 协议中有一个非常有意思的设计,在opcode内,对帧类型进行了区分:文本和二进制流。但这个区分并没有规定文本类型有类似于http协议中空行表示结束的说法,而且长度也是由帧头记录,也就是说,单纯从协议格式上来讲,这个区分,没有任何实际的含义。RFC6455只是规定了如果采用文本帧,就必须用UTF8来编码,如果采用数据帧,则完全由应用程序来解释。这也许是为了给未知来源的文本帧提供了某种解读方式。

这种最大程度的向下兼容性在我看来,有点过于啰嗦,帧类型其实与子协议强相关。怎么解读帧都是应用层的事情,用什么格式来理解帧的内容,不就是subprotocol干的事情吗?不知道如何解析或如何使用的文本帧,除了浪费服务器的带宽之外,没有任何作用。而且在设计中,这个文本或则二进制帧的opcode也成了一个比较麻烦的障碍,应用层发送数据难道还需要根据websocket的实现所规定的帧类型进行编码?这儿应该有更方便,或则说更直接的方式来处理,理清楚思路之后,我决定将opcode交给应用层来处理,应用层必须注册 subprotocol,提供具体的帧解析的接口,握手的时候,如果没有指定subprotocol,那就采用一个通用的dummy来处理帧。而发送数据时,必须由subprotocol来决定使用文本还是二进制帧操作码,当接收到数据时,也必须将操作码和数据一起交给subprotocol来处理。websocket的实现本身对此不作任何干预。

相关推荐
weixin_604236671 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
换个昵称都难4 小时前
webrtc 音频模块FEC模块
网络·音视频·webrtc
youngerwang5 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
zjun10016 小时前
TCP专栏-4.四次挥手
网络协议·tcp/ip
天天进步20157 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
智慧光迅AINOPOL8 小时前
校园在线巡课系统方案:督导全覆盖
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
酉鬼女又兒8 小时前
零基础入门计算机网络:网络层核心任务、三大关键问题、两种服务类型与 TCP/IP 网际层协议体系全解析
服务器·网络·网络协议·tcp/ip·计算机网络·php·求职招聘
Urbano8 小时前
工装制作全流程科普:从面料到自动化生产
网络·人工智能
2401_868534788 小时前
网规笔记 | 真题解析:2018年11月软考网规-网络安全案例分析
网络
Gauss松鼠会9 小时前
【GaussDB】GaussDB重要通信参数汇总
服务器·网络·数据库·sql·性能优化·gaussdb·经验总结