[Tweak] Socket separator (#145)
This commit is contained in:
@@ -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^%&");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user