sse

package
v0.0.0-...-25a1aa9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2024 License: Apache-2.0 Imports: 11 Imported by: 2

Documentation

Index

Constants

View Source
const (
	EventMessage = "message"
	EventError   = "error"
)

Variables

View Source
var CloseMessage = &Message{Data: io.EOF.Error(), Event: EventError}

Functions

func SendLoop

func SendLoop[T any](
	ctx context.Context,
	s *Sender,
	dataCh <-chan T,
	coverFn func(data T) ([]*Message, error),
	pingInterval time.Duration,
	timeout time.Duration,
) error

func SendLoopWithErr

func SendLoopWithErr[T any](
	ctx context.Context,
	s *Sender,
	dataCh <-chan T,
	errCh <-chan error,
	coverFn func(data T) ([]*Message, error),
	pingInterval time.Duration,
	timeout time.Duration,
) error

Types

type Buffered

type Buffered bool

type Message

type Message struct {
	ID      string
	Data    string
	Event   string
	Retry   time.Duration // ms
	Comment string
}

func (*Message) IsClose

func (m *Message) IsClose() bool

func (*Message) String

func (m *Message) String() string

type Parser

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

func NewParser

func NewParser(r io.Reader) *Parser

func (*Parser) Read

func (p *Parser) Read() (*Message, error)

func (*Parser) ReadLoop

func (p *Parser) ReadLoop(callback func(event *Message, err error) error) error

type ReceiveDataEvent

type ReceiveDataEvent string

type Receiver

type Receiver[T any] struct {
	// contains filtered or unexported fields
}

func NewReceiver

func NewReceiver[T any](reader io.Reader, coverFn func(data []byte) (T, bool), opts ...any) *Receiver[T]

func (*Receiver[T]) Data

func (r *Receiver[T]) Data() <-chan T

func (*Receiver[T]) Err

func (r *Receiver[T]) Err() <-chan error

func (*Receiver[T]) IsClosed

func (r *Receiver[T]) IsClosed() bool

func (*Receiver[T]) Run

func (r *Receiver[T]) Run(ctx context.Context)

type ResponseWriter

type ResponseWriter interface {
	http.ResponseWriter
	http.Flusher
}

type Sender

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

func NewSender

func NewSender(w http.ResponseWriter, opts ...any) (*Sender, error)

func (*Sender) Close

func (s *Sender) Close()

func (*Sender) IsClosed

func (s *Sender) IsClosed() bool

func (*Sender) Ping

func (s *Sender) Ping()

func (*Sender) Send

func (s *Sender) Send(messages ...*Message)

func (*Sender) SendComment

func (s *Sender) SendComment(comment string)

func (*Sender) SendError

func (s *Sender) SendError(v any)

func (*Sender) WaitForClose

func (s *Sender) WaitForClose() <-chan struct{}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL