一款简单易用的基础网络通讯组件库。

WSDataFrame 类

WebSocket数据帧

Definition

命名空间: TouchSocket.Http.WebSockets
程序集: TouchSocket.Http (在 TouchSocket.Http.dll 中) 版本:4.0.0-beta.143+5fcca7a4e70968794985dc3793adc50531308be6
C#
public sealed class WSDataFrame : IRequestInfo, 
	IRequestInfoBuilder, IBytesBuilder, IBigUnfixedHeaderRequestInfo
Inheritance
Object    WSDataFrame
Implements
IBigUnfixedHeaderRequestInfo, IBytesBuilder, IRequestInfo, IRequestInfoBuilder

构造函数

WSDataFrame初始化 WSDataFrame 类的一个新实例

属性

FIN 是否为最后数据帧。
IsBinary 是否是二进制数据类型
IsClose 是否是关闭请求
IsPing 是否是Ping
IsPong 是否是Pong
IsText 是否是文本类型
Mask 计算掩码
MaskingKey 掩码值
MaxLength 构建数据时,指示内存池的申请长度。

建议:该值可以尽可能的设置大一些,这样可以避免内存池扩容。

Opcode 数据类型
PayloadData 有效数据
RSV1 标识RSV-1。
RSV2 标识RSV-2。
RSV3 标识RSV-3。

方法

BuildTWriter 构建对象到ByteBlock
EqualsDetermines whether the specified object is equal to the current object.
(继承自 Object。)
GetHashCodeServes as the default hash function.
(继承自 Object。)
GetTypeGets the Type of the current instance.
(继承自 Object。)
SetMask 
SetMaskString 设置Mask。
ToStringReturns a string that represents the current object.
(继承自 Object。)

扩展方法

Build 扩展方法,用于构建给定的字节块。 该方法通过引用传递字节块,以利用ref参数提高性能,避免不必要的复制。
(由 ByteBlockBuilderExtension 定义。)
BuildAsBytes 将对象构建到字节数组
(由 ByteBlockBuilderExtension 定义。)
BuildRequestTByteBlock 构建请求数据(含Make)
(由 WebSocketDataFrameExtension 定义。)
BuildRequestToBytes 构建请求数据(含Make)
(由 WebSocketDataFrameExtension 定义。)
BuildResponseTByteBlock 构建响应数据(无Make)
(由 WebSocketDataFrameExtension 定义。)
BuildResponseToBytes 构建响应数据(无Make)
(由 WebSocketDataFrameExtension 定义。)
Map 将源对象的属性映射到目标对象的属性中。
(由 Mapper 定义。)
Map 将源对象映射到目标类型的实例。
(由 Mapper 定义。)
MapTTarget 将源对象映射到指定目标类型的新实例。
(由 Mapper 定义。)
ToJsonString 转换为Json
(由 SerializeConvert 定义。)
ToText 当数据类型为Text时,将数据帧转换为文本消息。
(由 WebSocketDataFrameExtension 定义。)

显式接口实现

IBigUnfixedHeaderRequestInfoBodyLength 数据体长度
IBigUnfixedHeaderRequestInfoHeaderLength 协议头长度
IBigUnfixedHeaderRequestInfoOnAppendBody 当收到数据,由框架封送数据。

您需要将有效数据自行保存。该方法可能会多次调用。

IBigUnfixedHeaderRequestInfoOnFinished 当完成数据接收时调用。

当返回False时,将不会把该对象向Received传递。

IBigUnfixedHeaderRequestInfoOnParsingHeaderTReader 当收到数据,由框架封送数据,您需要在此函数中,解析自己的数据包头。

如果满足包头的解析,请返回True,并且递增整个包头的长度到Position,然后赋值BodyLength

如果返回,意味着缓存剩余数据,此时如果仅仅是因为长度不足,则不必修改其他。

但是如果是因为数据错误,则需要修改Position到正确位置,如果都不正确,则设置Position等于Length

参见