Documentation
¶
Index ¶
- type BufferedMessage
- type Client
- type ClientDeliveryManager
- func (cdm *ClientDeliveryManager) GetAllClients() []string
- func (cdm *ClientDeliveryManager) GetClientTracker(clientID string) *ClientDeliveryTracker
- func (cdm *ClientDeliveryManager) RegisterClient(clientID string) *ClientDeliveryTracker
- func (cdm *ClientDeliveryManager) UnregisterClient(clientID string)
- func (cdm *ClientDeliveryManager) UpdateClientAcknowledgment(clientID string, messageID string)
- type ClientDeliveryTracker
- type EncryptedTokenValidator
- type Events
- type Hub
- func (hub *Hub) Broadcast(message *Message)
- func (hub *Hub) GetClientCount() int
- func (hub *Hub) GetDeliveryManager() *ClientDeliveryManager
- func (hub *Hub) GetMessageBuffer() *MessageBuffer
- func (hub *Hub) GetMissedMessages(clientID string, lastReceivedID string) []*BufferedMessage
- func (hub *Hub) Handle(w http.ResponseWriter, r *http.Request)
- func (hub *Hub) Run()
- func (hub *Hub) SendToClient(clientID string, message *Message) error
- func (hub *Hub) SetCryptoManager(cm *helper.CryptoManager)
- func (hub *Hub) SetEncryptedTokenValidator(validator EncryptedTokenValidator)
- func (hub *Hub) SetMessageBuffer(mb *MessageBuffer)
- func (hub *Hub) SetTokenValidator(validator TokenValidator)
- func (hub *Hub) Stop()
- type Message
- type MessageBuffer
- func (mb *MessageBuffer) AddMessage(msg *BufferedMessage)
- func (mb *MessageBuffer) Clear()
- func (mb *MessageBuffer) GetMessagesSince(messageID string) []*BufferedMessage
- func (mb *MessageBuffer) GetSize() int
- func (mb *MessageBuffer) GetUndeliveredMessages(clientID string, lastAcknowledgedID string) []*BufferedMessage
- type TokenValidator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BufferedMessage ¶
type BufferedMessage struct {
ID string `json:"id"`
Event string `json:"event"`
Data string `json:"data"`
Timestamp time.Time `json:"timestamp"`
CreatedAt time.Time `json:"-"`
ExpiresAt time.Time `json:"-"`
Retry int `json:"retry,omitempty"`
Extra map[string]interface{} `json:"extra,omitempty"`
}
BufferedMessage represents a message with delivery metadata
type Client ¶
type Client struct {
ID string
Channel chan *Message
Request *http.Request
Writer http.ResponseWriter
Flusher http.Flusher
// contains filtered or unexported fields
}
Client SSEClient represents a single SSE connection
type ClientDeliveryManager ¶
type ClientDeliveryManager struct {
// contains filtered or unexported fields
}
ClientDeliveryManager manages delivery tracking for multiple clients
func NewClientDeliveryManager ¶
func NewClientDeliveryManager() *ClientDeliveryManager
NewClientDeliveryManager creates a new delivery manager
func (*ClientDeliveryManager) GetAllClients ¶
func (cdm *ClientDeliveryManager) GetAllClients() []string
GetAllClients returns all registered client IDs
func (*ClientDeliveryManager) GetClientTracker ¶
func (cdm *ClientDeliveryManager) GetClientTracker(clientID string) *ClientDeliveryTracker
GetClientTracker returns the tracker for a client
func (*ClientDeliveryManager) RegisterClient ¶
func (cdm *ClientDeliveryManager) RegisterClient(clientID string) *ClientDeliveryTracker
RegisterClient registers a new client
func (*ClientDeliveryManager) UnregisterClient ¶
func (cdm *ClientDeliveryManager) UnregisterClient(clientID string)
UnregisterClient removes a client tracker
func (*ClientDeliveryManager) UpdateClientAcknowledgment ¶
func (cdm *ClientDeliveryManager) UpdateClientAcknowledgment(clientID string, messageID string)
UpdateClientAcknowledgment updates the last acknowledged message for a client
type ClientDeliveryTracker ¶
type ClientDeliveryTracker struct {
// contains filtered or unexported fields
}
ClientDeliveryTracker tracks which messages have been delivered to which clients
func NewClientDeliveryTracker ¶
func NewClientDeliveryTracker(clientID string) *ClientDeliveryTracker
NewClientDeliveryTracker creates a tracker for a client
func (*ClientDeliveryTracker) GetLastMessageID ¶
func (cdt *ClientDeliveryTracker) GetLastMessageID() string
GetLastMessageID returns the last acknowledged message ID
func (*ClientDeliveryTracker) UpdateLastMessageID ¶
func (cdt *ClientDeliveryTracker) UpdateLastMessageID(messageID string)
UpdateLastMessageID updates the last acknowledged message ID
type EncryptedTokenValidator ¶
EncryptedTokenValidator is a function type for validating encrypted tokens
type Hub ¶
type Hub struct {
// contains filtered or unexported fields
}
Hub SSEHub manages all SSE connections
func (*Hub) Broadcast ¶
Broadcast sends a message to all connected clients and buffers it for later retrieval
func (*Hub) GetClientCount ¶
GetClientCount returns the number of connected clients
func (*Hub) GetDeliveryManager ¶
func (hub *Hub) GetDeliveryManager() *ClientDeliveryManager
GetDeliveryManager returns the delivery manager
func (*Hub) GetMessageBuffer ¶
func (hub *Hub) GetMessageBuffer() *MessageBuffer
GetMessageBuffer returns the message buffer
func (*Hub) GetMissedMessages ¶
func (hub *Hub) GetMissedMessages(clientID string, lastReceivedID string) []*BufferedMessage
GetMissedMessages returns messages that were sent while a client was offline clientID: the client requesting missed messages lastReceivedID: the ID of the last message the client successfully received
func (*Hub) Handle ¶
func (hub *Hub) Handle(w http.ResponseWriter, r *http.Request)
Handle is an HTTP handler for SSE connections
func (*Hub) SendToClient ¶
SendToClient sends a message to a specific client
func (*Hub) SetCryptoManager ¶
func (hub *Hub) SetCryptoManager(cm *helper.CryptoManager)
SetCryptoManager sets the crypto manager for decrypting tokens
func (*Hub) SetEncryptedTokenValidator ¶
func (hub *Hub) SetEncryptedTokenValidator(validator EncryptedTokenValidator)
SetEncryptedTokenValidator sets the encrypted token validation function
func (*Hub) SetMessageBuffer ¶
func (hub *Hub) SetMessageBuffer(mb *MessageBuffer)
SetMessageBuffer sets a custom message buffer
func (*Hub) SetTokenValidator ¶
func (hub *Hub) SetTokenValidator(validator TokenValidator)
SetTokenValidator sets the token validation function
type Message ¶
Message SSEMessage represents a message to be sent via SSE
func NewSSEMessage ¶
NewSSEMessage creates a new SSE message
type MessageBuffer ¶
type MessageBuffer struct {
// contains filtered or unexported fields
}
MessageBuffer stores SSE messages with ID tracking for reliable delivery
func NewMessageBuffer ¶
func NewMessageBuffer(maxSize int, ttl time.Duration) *MessageBuffer
NewMessageBuffer creates a new message buffer
func (*MessageBuffer) AddMessage ¶
func (mb *MessageBuffer) AddMessage(msg *BufferedMessage)
AddMessage adds a message to the buffer
func (*MessageBuffer) Clear ¶
func (mb *MessageBuffer) Clear()
Clear removes all messages from buffer
func (*MessageBuffer) GetMessagesSince ¶
func (mb *MessageBuffer) GetMessagesSince(messageID string) []*BufferedMessage
GetMessagesSince returns all messages since a given message ID
func (*MessageBuffer) GetSize ¶
func (mb *MessageBuffer) GetSize() int
GetSize returns the current number of buffered messages
func (*MessageBuffer) GetUndeliveredMessages ¶
func (mb *MessageBuffer) GetUndeliveredMessages(clientID string, lastAcknowledgedID string) []*BufferedMessage
GetUndeliveredMessages returns messages that haven't been delivered to a client
type TokenValidator ¶
TokenValidator is a function type for validating tokens/api-keys