Skip to content

vweb.sse #

fn new_connection #

fn new_connection(conn &net.TcpConn) &SSEConnection

struct SSEConnection #

@[heap]
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 {
pub:
	id    string
	event string
	data  string
	retry int
}