[Tweak] Socket separator (#145)

This commit is contained in:
HitPanda
2023-06-02 18:10:13 +03:00
committed by Aviu00
parent 9ec90524b1
commit 6f549f0be9
2 changed files with 19 additions and 9 deletions

View File

@@ -44,7 +44,9 @@ public sealed class UtkaTCPServer : TcpServer
{ {
if(!session.Authenticated) continue; if(!session.Authenticated) continue;
session.SendAsync(JsonSerializer.Serialize(message, message.GetType())); var json = JsonSerializer.Serialize(message, message.GetType());
session.SendAsync(json + "&%^sep^%&");
} }
} }

View File

@@ -72,24 +72,32 @@ public sealed class UtkaTCPSession : TcpSession
protected override void OnDisconnected() protected override void OnDisconnected()
{ {
base.OnDisconnecting(); OnDisconnecting();
Dispose(); Dispose();
BufferCahce = string.Empty; BufferCahce = string.Empty;
} }
private void HandleCache() private void HandleCache()
{ {
var regex = new Regex("{.+?}"); var handles = BufferCahce.Split("&%^sep^%&");
var matches = regex.Matches(BufferCahce);
foreach (Match match in matches) for (var i = 0; i < handles.Length; i++)
{ {
var pos = BufferCahce.IndexOf(match.Value); var handle = handles[i];
BufferCahce = BufferCahce.Substring(0, pos) + BufferCahce.Substring(pos + match.Value.Length);
if (!ValidateMessage(match.Value, out var message)) if (i + 1 == handles.Length && !BufferCahce.EndsWith("&%^sep^%&"))
continue;
if (handle.Length == 0 || !handle.StartsWith("{\"") || !handle.EndsWith("\"}"))
continue;
var pos = BufferCahce.IndexOf(handle);
BufferCahce = BufferCahce.Substring(0, pos) + BufferCahce.Substring(pos + handle.Length + "&%^sep^%&".Length);
if (!ValidateMessage(handle, out var message))
{ {
this.SendAsync("Validation fail"); SendAsync("Validation fail");
return; return;
} }