fix: go back to simple message handling

This commit is contained in:
Anna 2022-08-24 20:54:19 -04:00
parent 4dc5017843
commit ca21e5bd7a
3 changed files with 16 additions and 28 deletions

View File

@ -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]);
}
}

View File

@ -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"/>

6
client/ExtraChat/packages.lock.json Normal file → Executable file
View File

@ -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",