Skip to content

Commit 9bd4a5b

Browse files
committed
[同步]1. 同步主库到2024年8月8日 91433fc
91433fc - tried to support websocket encoding with mask
1 parent 2f6646f commit 9bd4a5b

3 files changed

Lines changed: 383 additions & 102 deletions

File tree

src/GameFrameX.SuperSocket.WebSocket/WebSocketDataPipelineFilter.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,21 @@ namespace GameFrameX.SuperSocket.WebSocket
77
{
88
public class WebSocketDataPipelineFilter : PackagePartsPipelineFilter<WebSocketPackage>
99
{
10-
private HttpHeader _httpHeader;
10+
private readonly HttpHeader _httpHeader;
11+
12+
private readonly bool _requireMask = true;
1113

1214
/// <summary>
1315
/// -1: default value
1416
/// 0: ready to preserve bytes
1517
/// N: the bytes we preserved
1618
/// </summary>
1719
private long _consumed = -1;
18-
19-
public WebSocketDataPipelineFilter(HttpHeader httpHeader)
20+
21+
public WebSocketDataPipelineFilter(HttpHeader httpHeader, bool requireMask = true)
2022
{
2123
_httpHeader = httpHeader;
24+
_requireMask = requireMask;
2225
}
2326

2427
protected override WebSocketPackage CreatePackage()
@@ -72,6 +75,11 @@ protected override void OnPartReaderSwitched(IPackagePartReader<WebSocketPackage
7275
{
7376
if (currentPartReader is FixPartReader)
7477
{
78+
if (_requireMask && !CurrentPackage.HasMask)
79+
{
80+
throw new ProtocolException("Mask is required for this websocket package.");
81+
}
82+
7583
// not final fragment or is the last fragment of multiple fragments message
7684
// _consumed = 0 means we are ready to preserve the bytes
7785
if (!CurrentPackage.FIN || CurrentPackage.Head != null)

0 commit comments

Comments
 (0)