首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >WebSocket >WebSocket支持哪些数据类型和格式?

WebSocket支持哪些数据类型和格式?

词条归属:WebSocket

1. 文本帧(Text Frame)

文本帧的操作码(Opcode)为0x1,载荷数据必须是合法的UTF-8编码字符串。接收方有义务验证UTF-8合法性,如果收到无效UTF-8数据,必须关闭连接并返回状态码1007。文本帧非常适合传输JSONXML或其他基于文本的数据格式。大多数WebSocket API默认以文本帧发送数据,开发者可以直接发送JSON.stringify()后的字符串。

2. 二进制帧(Binary Frame)

二进制帧的操作码为0x2,载荷数据可以是任意原始字节流,没有编码约束。应用层需要自行定义二进制数据的格式和解析方式。常见的二进制序列化格式包括Protocol Buffers、MessagePack、CBOR等。二进制帧的优势在于无转码开销,带宽利用率高,适合传输文件、图像、音频、视频或高频金融数据。在浏览器中,可以通过设置WebSocket 的binaryType属性("blob"或"arraybuffer")来控制二进制数据的接收方式。

3. 控制帧与其他帧类型

除了数据帧(文本帧和二进制帧)外,WebSocket 协议还定义了多种控制帧:Close帧(0x8)用于发起连接关闭握手;Ping帧(0x9)用于心跳检测,接收方必须回复Pong帧;Pong帧(0xA)是Ping帧的响应,也可单独发送作为单向心跳。此外,还有Continuation帧(0x0)用于消息分片传输,当一条消息太大无法放入单个帧时,可以分片发送,第一个分片帧的FIN位为0且操作码为0x1或0x2,中间分片帧的操作码为0x0,最后一个分片帧的FIN位为1。

相关文章
23 - 字典键值支持哪些数据类型
1. 有哪些数据类型不能作为字典键值的类型 列表 字典 d = {} d['name'] = 'Bill' d[10] = 20 d[True] = False d[12.3] = 20.1 d[(1, 2, 3)] = [4 ,5 ,6] class Person: pass p1 = Person() p2 = Person() d[p1] = 'p1' d[p2] = 'p2' for k,v in d.items(): print(k, ' - ', v) pri
ruochen
2021-05-23
7390
数据类型和Json格式
作者: 阮一峰 1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml。 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开。 它说,从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海"。 第三种类型是映射(map
wangxl
2018-03-08
1.8K0
YashanDB如何支持多种数据类型与格式?
在现代数据库系统中,支持多种数据类型与格式对于满足不同业务需求、优化数据存储及查询性能至关重要。如何高效组织和管理多样化数据,成为数据库技术设计的难点和关键。本文围绕YashanDB,深入探讨其如何支持多类型数据与格式,揭示其底层技术架构和实现机制。
数据库砖家
2025-10-12
2400
如何让服务端同时支持WebSocket和SSL加密的WebSocket
要服务端同时支持ws与wss并不容易,其难点主要在于:wss通道必须在TCP连接刚建立时(收发消息前)就要先进行SSL加密,否则,后续的通信将无法正常进行。如此一来,当TCP连接刚建立时,服务器就无法具体分辨哪个是ws客户端哪个是wss客户端。那怎么办了?
云知识Online
2018-05-03
3.2K0
Preview是什么软件 软件支持哪些文件格式
相信mac用户对于Preview软件并不陌生,这是mac电脑自带的一款应用程序,熟悉这款程序的用户往往能够十分熟练地处理这一问题。然而,如果是mac电脑的新用户,可能会对于这款应用程序感到十分陌生,对这个名字也只停留在单词含义的层面。因此,本文将对这款软件进行简单介绍,并说明哪些文件可以在电脑上用该软件打开并使用。
用户8739405
2021-06-17
4.9K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券