go-sse: github.com/aliakseiz/go-sse Index | Files | Directories

package sse

import "github.com/aliakseiz/go-sse"

Package sse implements Server-Sent Events that supports multiple channels.

Server-sent events is a method of continuously sending data from a server to the browser, rather than repeatedly requesting it.

Examples

Basic usage of sse package.

s := sse.NewServer(nil)
defer s.Shutdown()

http.Handle("/events/", s)

Index

Package Files

channel.go client.go doc.go message.go options.go sse.go

type Channel Uses

type Channel struct {
    // contains filtered or unexported fields
}

Channel represents a server sent events channel.

func (*Channel) ClientCount Uses

func (c *Channel) ClientCount() int

ClientCount returns the number of clients connected to this channel.

func (*Channel) Close Uses

func (c *Channel) Close()

Close the channel and disconnect all clients.

func (*Channel) LastEventID Uses

func (c *Channel) LastEventID() string

LastEventID returns the ID of the last message sent.

func (*Channel) SendBroadcastMessage Uses

func (c *Channel) SendBroadcastMessage(message *Message)

SendBroadcastMessage broadcast a message to all clients in a channel.

func (*Channel) SendMessageToClients Uses

func (c *Channel) SendMessageToClients(message *Message, uuids []string)

SendMessageToClients broadcast a message to specific clients in a channel.

type Client Uses

type Client struct {
    // contains filtered or unexported fields
}

Client represents a web browser connection.

func (*Client) Channel Uses

func (c *Client) Channel() string

Channel returns the channel where this client is subscribe to.

func (*Client) LastEventID Uses

func (c *Client) LastEventID() string

LastEventID returns the ID of the last message sent.

func (*Client) SendMessage Uses

func (c *Client) SendMessage(message *Message)

SendMessage sends a message to client.

type Message Uses

type Message struct {
    // contains filtered or unexported fields
}

Message represents a event source message.

func NewMessage Uses

func NewMessage(id, data, event string) *Message

NewMessage creates an event source message.

func SimpleMessage Uses

func SimpleMessage(data string) *Message

SimpleMessage creates a simple event source message.

func (*Message) String Uses

func (m *Message) String() string

type Options Uses

type Options struct {
    // RetryInterval change EventSource default retry interval (milliseconds).
    RetryInterval int
    // Headers allow to set custom headers (useful for CORS support).
    Headers map[string]string
    // ChannelNameFunc allow to create custom channel names.
    // Default channel name is the request path.
    ChannelNameFunc func(*http.Request) string
    // All usage logs end up in Logger
    Logger *log.Logger
    // AuthorizationFunc allows to authorize client before adding to channel.
    // No authorization by default and when error returned.
    AuthorizationFunc func(string, *http.Request) error
    // DisconnectChan channel that accepts client UUID to disconnect.
    // Write-only
    DisconnectChan chan<- string
}

Options holds server configurations.

type Server Uses

type Server struct {
    // contains filtered or unexported fields
}

Server represents SSE server.

func NewServer Uses

func NewServer(options *Options) *Server

NewServer creates a new SSE server.

func (*Server) Channels Uses

func (s *Server) Channels() []string

Channels returns a list of all channels to the server.

func (*Server) ClientCount Uses

func (s *Server) ClientCount() int

ClientCount returns the number of clients connected to this server.

func (*Server) CloseChannel Uses

func (s *Server) CloseChannel(name string)

CloseChannel closes a channel.

func (*Server) GetChannel Uses

func (s *Server) GetChannel(name string) (*Channel, bool)

GetChannel returns the channel associated with name or nil if not found.

func (*Server) HasChannel Uses

func (s *Server) HasChannel(name string) bool

HasChannel returns true if the channel associated with name exists.

func (*Server) Restart Uses

func (s *Server) Restart()

Restart closes all channels and clients.

func (*Server) SendBroadcastMessage Uses

func (s *Server) SendBroadcastMessage(channel string, message *Message) error

SendBroadcastMessage broadcast a message to all clients in a channel.

func (*Server) SendMessageToClients Uses

func (s *Server) SendMessageToClients(channel string, uuids []string, message *Message) error

SendMessageToClients broadcast a message to specific clients in a channel.

func (*Server) ServeHTTP Uses

func (s *Server) ServeHTTP(response http.ResponseWriter, request *http.Request)

func (*Server) Shutdown Uses

func (s *Server) Shutdown()

Shutdown performs a graceful server shutdown.

Directories

PathSynopsis
_examples

Package sse imports 10 packages (graph) and is imported by 1 packages. Updated 2020-06-28. Refresh now. Tools for package owners.