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

package sse

import "github.com/JulesMike/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 closes 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) SendMessage Uses

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

SendMessage broadcast a message to all 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 returns a new message

func SimpleMessage Uses

func SimpleMessage(data string) *Message

SimpleMessage returns a new simple message

func (*Message) String Uses

func (m *Message) String() string

String implements the Stringer interface

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
    // OnClientConnect allows to execute custom logic when client connects for
    // first time
    OnClientConnect func(c *Client)
    // 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 *logrus.Entry
}

Options holds server configurations.

type Server Uses

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

Server represents a server sent events server.

func NewServer Uses

func NewServer(options *Options) *Server

NewServer creates a new SSE server.

func (*Server) AddChannel Uses

func (s *Server) AddChannel(name string) *Channel

AddChannel adds a new channel

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 and allow new connections.

func (*Server) SendMessage Uses

func (s *Server) SendMessage(channelName string, message *Message)

SendMessage broadcast a message to all clients in a channel. If channelName is an empty string, it will broadcast the message to all channels.

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 7 packages (graph) and is imported by 1 packages. Updated 2019-12-25. Refresh now. Tools for package owners.