fix: go back to simple message handling
This commit is contained in:
parent
4dc5017843
commit
ca21e5bd7a
|
@ -1,5 +1,4 @@
|
|||
using System.Buffers;
|
||||
using System.Net.WebSockets;
|
||||
using System.Net.WebSockets;
|
||||
using ExtraChat.Protocol;
|
||||
using MessagePack;
|
||||
|
||||
|
@ -17,30 +16,19 @@ public static class Ext {
|
|||
}
|
||||
|
||||
public static async Task<ResponseContainer> ReceiveMessage(this ClientWebSocket client) {
|
||||
const int maxSize = 1_048_576;
|
||||
// rent a 1 MiB byte array from the shared runtime pool
|
||||
var bytes = ArrayPool<byte>.Shared.Rent(maxSize);
|
||||
var bytes = new ArraySegment<byte>(new byte[2048]);
|
||||
|
||||
try {
|
||||
WebSocketReceiveResult result;
|
||||
var i = 0;
|
||||
do {
|
||||
result = await client.ReceiveAsync(bytes[i..maxSize], CancellationToken.None);
|
||||
i += result.Count;
|
||||
WebSocketReceiveResult result;
|
||||
var i = 0;
|
||||
do {
|
||||
result = await client.ReceiveAsync(bytes[i..], CancellationToken.None);
|
||||
i += result.Count;
|
||||
|
||||
// break if we've filled up the buffer, even if message isn't complete
|
||||
if (i == maxSize) {
|
||||
break;
|
||||
}
|
||||
if (i >= bytes.Count) {
|
||||
throw new Exception();
|
||||
}
|
||||
} while (!result.EndOfMessage);
|
||||
|
||||
if (i > maxSize) {
|
||||
throw new Exception("read too many bytes for one message");
|
||||
}
|
||||
} while (!result.EndOfMessage);
|
||||
|
||||
return MessagePackSerializer.Deserialize<ResponseContainer>(bytes);
|
||||
} finally {
|
||||
ArrayPool<byte>.Shared.Return(bytes);
|
||||
}
|
||||
return MessagePackSerializer.Deserialize<ResponseContainer>(bytes[..i]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="ASodium" Version="0.5.3"/>
|
||||
<PackageReference Include="Dalamud.ContextMenu" Version="1.1.1"/>
|
||||
<PackageReference Include="Dalamud.ContextMenu" Version="1.2.1"/>
|
||||
<PackageReference Include="DalamudPackager" Version="2.1.8"/>
|
||||
<PackageReference Include="MessagePack" Version="2.4.35"/>
|
||||
<PackageReference Include="System.Net.WebSockets.Client" Version="4.3.2"/>
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
},
|
||||
"Dalamud.ContextMenu": {
|
||||
"type": "Direct",
|
||||
"requested": "[1.1.1, )",
|
||||
"resolved": "1.1.1",
|
||||
"contentHash": "YwqdkjEQKHW7VGGmWxhBwMpuN9twsLaO6Lm05uQ1LosN2iEKNLrAMB8LlUy8qqCojlrRnhiwece/Z6Ppvfgi6g=="
|
||||
"requested": "[1.2.1, )",
|
||||
"resolved": "1.2.1",
|
||||
"contentHash": "RiBkn1OYRTnVbfUGYolLBE8MOeXjok+JiZaryb27oGa7YARCTu0XgUzkRiCglujknsHOn5kAaXsT3TUJmqMigg=="
|
||||
},
|
||||
"DalamudPackager": {
|
||||
"type": "Direct",
|
||||
|
|
Loading…
Reference in New Issue