in Darabonba/Utils/StreamUtils.cs [176:195]
private static EventResult TryGetEvents(string head, string chunk)
{
string all = head + chunk;
var events = new List<SSEEvent>();
var start = 0;
for (var i = 0; i < all.Length - 1; i++)
{
// message separated by \n\n
if (all[i] == '\n' && i + 1 < all.Length && all[i + 1] == '\n')
{
var rawEvent = all.Substring(start, i - start).Trim();
var sseEvent = ParseEvent(rawEvent);
events.Add(sseEvent);
start = i + 2;
i++;
}
}
string remain = all.Substring(start);
return new EventResult(events, remain);
}