in DarabonbaUnitTests/Utils/StreamUtilsTest.cs [173:222]
private void HandleSseWithDataDividedResponse(HttpListenerResponse response)
{
int count = 0;
Timer timer = null;
var cts = new CancellationTokenSource();
var token = cts.Token;
timer = new Timer(_ =>
{
if (token.IsCancellationRequested)
{
return;
}
if (count >= 5)
{
cts.Cancel();
timer.Dispose();
response.Close();
return;
}
if (count == 1)
{
byte[] buffer = Encoding.UTF8.GetBytes("data:{\"count\":");
response.OutputStream.Write(buffer, 0, buffer.Length);
response.OutputStream.Flush();
count++;
return;
}
if (count == 2)
{
byte[] buffer = Encoding.UTF8.GetBytes(string.Format("{0},\"tag\":\"divided\"}}\nevent:flow\nid:sse-test\nretry:3\n\n", count++));
response.OutputStream.Write(buffer, 0, buffer.Length);
response.OutputStream.Flush();
return;
}
try
{
byte[] buffer1 = Encoding.UTF8.GetBytes(string.Format("data: {0}\nevent:flow\nid:sse-test\nretry:3\n\n", JsonConvert.SerializeObject(new { count = count++ })));
response.OutputStream.Write(buffer1, 0, buffer1.Length);
response.OutputStream.Flush();
}
catch (ObjectDisposedException ex)
{
Console.WriteLine($"ObjectDisposedException caught: {ex.Message}");
}
}, null, 0, 100);
}