encode method
This event in the text/event-stream format, blank line included.
Implementation
String encode() {
final buffer = StringBuffer();
if (comment case final comment?) {
for (final line in comment.split('\n')) {
buffer.writeln(':$line');
}
}
if (event case final event?) buffer.writeln('event:${_oneLine(event)}');
if (id case final id?) buffer.writeln('id:${_oneLine(id)}');
if (retry case final retry?) {
buffer.writeln('retry:${retry.inMilliseconds}');
}
if (data case final data?) {
// A newline inside the value would end the event, so each line is its
// own `data:` field. The browser rejoins them with `\n`.
for (final line in data.split('\n')) {
buffer.writeln('data:$line');
}
}
buffer.writeln();
return buffer.toString();
}