Skip to content

Commit

Permalink
fix(dev-server): Improve socket performance
Browse files Browse the repository at this point in the history
  • Loading branch information
dr1rrb committed Jun 17, 2024
1 parent 18cf119 commit 723e48b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 24 deletions.
29 changes: 15 additions & 14 deletions src/Uno.UI.RemoteControl.Messaging/Messages/Frame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,6 @@ public Frame(short version, string scope, string name, string content)

public string Content { get; }

public static Frame Read(Stream stream)
{
using (var reader = new BinaryReader(stream, Encoding.UTF8))
{
var version = reader.ReadInt16();
var scope = reader.ReadString();
var name = reader.ReadString();
var content = reader.ReadString();

return new Frame(version, scope, name, content);
}
}

public static Frame Create<T>(short version, string scope, string name, T content)
=> new Frame(
version,
Expand Down Expand Up @@ -76,13 +63,27 @@ public bool TryGetContent<T>([NotNullWhen(true)] out T? content)
}
}

public static Frame Read(Stream stream)
{
using var reader = new BinaryReader(stream, Encoding.UTF8, leaveOpen: true);

var version = reader.ReadInt16();
var scope = reader.ReadString();
var name = reader.ReadString();
var content = reader.ReadString();

return new Frame(version, scope, name, content);
}

public void WriteTo(Stream stream)
{
var writer = new BinaryWriter(stream, Encoding.UTF8);
using var writer = new BinaryWriter(stream, Encoding.UTF8, leaveOpen: true);

writer.Write((short)Version);
writer.Write(Scope);
writer.Write(Name);
writer.Write(Content);

writer.Flush();
}
}
16 changes: 6 additions & 10 deletions src/Uno.UI.RemoteControl/Helpers/WebSocketHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,17 @@ public static class WebSocketHelper
return null;
}

if (result.EndOfMessage)
if (result.Count != 0)
{
if (result.Count != 0)
{
await mem.WriteAsync(buff, 0, result.Count);
}
await mem.WriteAsync(buff, 0, result.Count, token);
}

if (result.EndOfMessage)
{
mem.Position = 0;

return Frame.Read(mem);
}
else
{
await mem.WriteAsync(buff, 0, result.Count);
}
}
}
finally
Expand All @@ -59,6 +55,6 @@ internal static async Task SendFrame(WebSocket webSocket, Frame frame, Cancellat
using var stream = manager.GetStream();
frame.WriteTo(stream);

await webSocket.SendAsync(new ArraySegment<byte>(stream.GetBuffer(), 0, (int)stream.Length), WebSocketMessageType.Binary, true, ct);
await webSocket.SendAsync(new ArraySegment<byte>(stream.GetBuffer(), 0, (int)stream.Position), WebSocketMessageType.Binary, true, ct);
}
}

0 comments on commit 723e48b

Please sign in to comment.