Documentation
¶
Index ¶
- Variables
- type Client
- type GraphQLSubscription
- type GraphQLSubscriptionHandler
- type GraphQLSubscriptionMessage
- type Handler
- type Hub
- func (h *Hub) Broadcast(message []byte)
- func (h *Hub) BroadcastGraphQLData(subscriptionID string, data interface{})
- func (h *Hub) BroadcastToTopic(topic string, data interface{})
- func (h *Hub) GetClientCount() int
- func (h *Hub) GetClients() map[*Client]bool
- func (h *Hub) GetSubscriptionCount(topic string) int
- func (h *Hub) GetTopics() []string
- func (h *Hub) GetTotalConnections() int
- func (h *Hub) Run(ctx context.Context)
- func (h *Hub) Subscribe(client *Client, topic string)
- func (h *Hub) Unsubscribe(client *Client, topic string)
- type Message
- type SubscriptionManager
- func (sm *SubscriptionManager) CreateSubscription(client *Client, query string, variables map[string]interface{}) (*GraphQLSubscription, error)
- func (sm *SubscriptionManager) GetSubscription(subscriptionID string) (*GraphQLSubscription, bool)
- func (sm *SubscriptionManager) GetSubscriptionsByTopic(topic string) []*GraphQLSubscription
- func (sm *SubscriptionManager) RemoveSubscription(subscriptionID string)
Constants ¶
This section is empty.
Variables ¶
var Upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, ReadBufferSize: 1024, WriteBufferSize: 1024, }
Upgrader specifies parameters for upgrading an HTTP connection to a WebSocket
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client represents a websocket client
func (*Client) HandleGraphQLSubscription ¶
func (c *Client) HandleGraphQLSubscription(message *GraphQLSubscriptionMessage)
HandleGraphQLSubscription handles GraphQL subscription protocol messages
type GraphQLSubscription ¶
type GraphQLSubscription struct {
ID string
Query string
Variables map[string]interface{}
Client *Client
Topics []string
CreatedAt time.Time
}
GraphQLSubscription represents a GraphQL subscription
type GraphQLSubscriptionHandler ¶
type GraphQLSubscriptionHandler struct {
// contains filtered or unexported fields
}
GraphQLSubscriptionHandler handles GraphQL subscription connections
func NewGraphQLSubscriptionHandler ¶
func NewGraphQLSubscriptionHandler(hub *Hub, logger *slog.Logger) *GraphQLSubscriptionHandler
NewGraphQLSubscriptionHandler creates a new GraphQL subscription handler
func (*GraphQLSubscriptionHandler) ServeHTTP ¶
func (h *GraphQLSubscriptionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP handles GraphQL subscription WebSocket connections
type GraphQLSubscriptionMessage ¶
type GraphQLSubscriptionMessage struct {
ID string `json:"id,omitempty"`
Type string `json:"type"`
Payload map[string]interface{} `json:"payload,omitempty"`
}
GraphQLSubscriptionMessage represents a GraphQL subscription message
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler handles WebSocket connections for GraphQL subscriptions
func NewHandler ¶
NewHandler creates a new WebSocket handler
type Hub ¶
type Hub struct {
// contains filtered or unexported fields
}
Hub maintains the set of active clients and broadcasts messages to the clients
func (*Hub) BroadcastGraphQLData ¶
BroadcastGraphQLData broadcasts data to GraphQL subscribers
func (*Hub) BroadcastToTopic ¶
BroadcastToTopic broadcasts a message to all clients subscribed to a specific topic
func (*Hub) GetClientCount ¶
GetClientCount returns the number of connected clients
func (*Hub) GetClients ¶
GetClients returns all connected clients
func (*Hub) GetSubscriptionCount ¶
GetSubscriptionCount returns the number of subscriptions for a topic
func (*Hub) GetTotalConnections ¶
GetTotalConnections returns the total number of connections since startup
func (*Hub) Unsubscribe ¶
Unsubscribe unsubscribes a client from a topic
type Message ¶
type Message struct {
Type string `json:"type"`
Topic string `json:"topic,omitempty"`
Data interface{} `json:"data,omitempty"`
Timestamp time.Time `json:"timestamp"`
ClientID string `json:"clientId,omitempty"`
}
Message represents a websocket message
type SubscriptionManager ¶
type SubscriptionManager struct {
// contains filtered or unexported fields
}
SubscriptionManager manages GraphQL subscriptions
func NewSubscriptionManager ¶
func NewSubscriptionManager(hub *Hub, logger *slog.Logger) *SubscriptionManager
NewSubscriptionManager creates a new subscription manager
func (*SubscriptionManager) CreateSubscription ¶
func (sm *SubscriptionManager) CreateSubscription(client *Client, query string, variables map[string]interface{}) (*GraphQLSubscription, error)
CreateSubscription creates a new GraphQL subscription
func (*SubscriptionManager) GetSubscription ¶
func (sm *SubscriptionManager) GetSubscription(subscriptionID string) (*GraphQLSubscription, bool)
GetSubscription returns a subscription by ID
func (*SubscriptionManager) GetSubscriptionsByTopic ¶
func (sm *SubscriptionManager) GetSubscriptionsByTopic(topic string) []*GraphQLSubscription
GetSubscriptionsByTopic returns all subscriptions for a specific topic
func (*SubscriptionManager) RemoveSubscription ¶
func (sm *SubscriptionManager) RemoveSubscription(subscriptionID string)
RemoveSubscription removes a GraphQL subscription