Source code for anza.stream.sse
"""Server-Sent Events framing."""
from ..models.envelope import Envelope
[docs]
def format_event(envelope: Envelope) -> str:
"""Frame an envelope as one Server-Sent Event.
Args:
envelope: The envelope to send.
Returns:
str: ``"event: template\\ndata: <envelope JSON>\\n\\n"``. The JSON is
a single line, so one ``data:`` field is enough.
Example:
>>> from anza import Envelope, format_event
>>> format_event(Envelope(slot="feed", ts=1700000000, html="<p>Hi</p>"))
'event: template\\ndata: {"v":2,"slot":"feed","ts":1700000000,"html":"<p>Hi</p>"}\\n\\n'
"""
return f"event: template\ndata: {envelope.to_json()}\n\n"