Es sollte möglich sein, Kommentarereignisse mit play.api.libs.EventSource.Event (auch bekannt als ServerSentEvents / SSE) zu senden. Diese Ereignisse beginnen mit einem Doppelpunkt und können verwendet werden, um die Verbindung aufrechtzuerhalten, z.
: this is a keep alive message
data: some actual event with data
Auf diese Weise können Sie eine Verbindung aufrechterhalten, indem Sie z.
Ok.chunked(source.via(EventSource.flow).keepAlive(50.seconds, () => heartbeatEvent)).as(ContentTypes.EVENT_STREAM)
Die Fallklasse play.api.libs.EventSource.Event
formatiert die Zeile immer mit einem Präfix data:
. Daher können keine reinen Kommentare / Herzschläge gesendet werden.
Hey @ an-tex,
Ja, es ist sinnvoll, Ereigniskommentare zu unterstützen, möglicherweise als neues Feld in play.api.libs.EventSource.Event
oder sogar als eigener Typ. Eine mögliche Problemumgehung besteht derzeit darin, Ereignisse mit event: heartbeat
zu senden, zum Beispiel:
val heartbeatEvent = Event(data = heartbeatData, name = Some("heartbeat"))
Ok.chunked(source.via(EventSource.flow).keepAlive(50.seconds, () => heartbeatEvent)).as(ContentTypes.EVENT_STREAM)
Und auf der Client-Seite haben Sie einen Event-Listener für heartbeat
.
Ja, diese Problemumgehung funktioniert. Ich werde versuchen, in den nächsten Wochen eine PR zu machen.
Hey @marcospereira, da ich in dieser Ausgabe keine weiteren Updates sehe, darf ich daran arbeiten? Jeder Zeiger wäre hilfreich, danke!
Hi @ fusuiyi123 , sorry das habe ich total vergessen. Von meiner Seite fühlen Sie sich frei zu übernehmen. Prost
Hilfreichster Kommentar
Hey @ an-tex,
Ja, es ist sinnvoll, Ereigniskommentare zu unterstützen, möglicherweise als neues Feld in
play.api.libs.EventSource.Event
oder sogar als eigener Typ. Eine mögliche Problemumgehung besteht derzeit darin, Ereignisse mitevent: heartbeat
zu senden, zum Beispiel:Und auf der Client-Seite haben Sie einen Event-Listener für
heartbeat
.