Skip to content

vweb.sse #

fn new_connection #

fn new_connection(conn &net.TcpConn) &SSEConnection

struct SSEConnection #

struct SSEConnection {
pub mut:
	headers       map[string]string
	conn          &net.TcpConn  = unsafe { nil }
	write_timeout time.Duration = 600 * time.second
}

This module implements the server side of Server Sent Events.
See https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#event_stream_format as well as https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events for detailed description of the protocol, and a simple web browser client example.

Event stream format The event stream is a simple stream of text data which must be encoded using UTF-8.
Messages in the event stream are separated by a pair of newline characters.
A colon as the first character of a line is in essence a comment, and is ignored.
Note: The comment line can be used to prevent connections from timing out; a server can send a comment periodically to keep the connection alive.

Each message consists of one or more lines of text listing the fields for that message.
Each field is represented by the field name, followed by a colon, followed by the text data for that field's value.

fn (SSEConnection) start #

fn (mut sse SSEConnection) start() !

sse_start is used to send the start of a Server Side Event response.

fn (SSEConnection) send_message #

fn (mut sse SSEConnection) send_message(message SSEMessage) !

send_message sends a single message to the http client that listens for SSE.
It does not close the connection, so you can use it many times in a loop.

struct SSEMessage #

struct SSEMessage {
	id    string
	event string
	data  string
	retry int
}