Documentation ¶
Overview ¶
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0
Index ¶
- Constants
- func IsValidSubscriptionStatus(status string) bool
- func RPCCloseHandler(args rpc.RPCArgs) rpc.RPCResponse
- func RPCFireEventSubHandler(args rpc.RPCArgs) rpc.RPCResponse
- func RPCReconnectHandler(args rpc.RPCArgs) rpc.RPCResponse
- func RPCSubscriptionHandler(args rpc.RPCArgs) rpc.RPCResponse
- func ResolveRPCName(cmd string) string
- func StartWebsocketServer(enableDebug bool, ip string, port int, enableSSL bool, strictMode bool)
- type Client
- type CloseMessage
- type EmptyStruct
- type KeepaliveMessage
- type KeepaliveMessagePayload
- type MessageMetadata
- type NotificationMessage
- type ReconnectMessage
- type ReconnectMessagePayload
- type ReconnectMessagePayloadSession
- type ServerManager
- type Subscription
- type SubscriptionGetSuccessResponse
- type SubscriptionPostErrorResponse
- type SubscriptionPostRequest
- type SubscriptionPostRequestTransport
- type SubscriptionPostSuccessResponse
- type SubscriptionPostSuccessResponseBody
- type SubscriptionTransport
- type WebSocketServer
- func (ws *WebSocketServer) GetCurrentSubscriptionsForReconnect() *util.List[[]Subscription]
- func (ws *WebSocketServer) HandleRPCEventSubForwarding(eventsubBody string, clientName string) (bool, string)
- func (ws *WebSocketServer) InitiateRestart()
- func (ws *WebSocketServer) WsPageHandler(w http.ResponseWriter, r *http.Request)
- type WelcomeMessage
- type WelcomeMessagePayload
- type WelcomeMessagePayloadSession
Constants ¶
const ( COMMAND_RESPONSE_SUCCESS int = 0 COMMAND_RESPONSE_INVALID_CMD int = 1 COMMAND_RESPONSE_FAILED_ON_SERVER int = 2 COMMAND_RESPONSE_MISSING_FLAG int = 3 )
const ( STATUS_ENABLED = "enabled" STATUS_AUTHORIZATION_REVOKED = "revoked" STATUS_MODERATOR_REMOVED = "moderator_removed" STATUS_USER_REMOVED = "user_removed" STATUS_VERSION_REMOVED = "version_removed" STATUS_WEBSOCKET_DISCONNECTED = "websocket_disconnected" STATUS_WEBSOCKET_FAILED_PING_PONG = "websocket_failed_ping_pong" STATUS_WEBSOCKET_RECEIVED_INBOUND_TRAFFIC = "websocket_received_inbound_traffic" STATUS_WEBSOCKET_CONNECTION_UNUSED = "websocket_connection_unused" STATUS_INTERNAL_ERROR = "websocket_internal_error" STATUS_NETWORK_TIMEOUT = "network_timeout" STATUS_NETWORK_ERROR = "websocket_network_error" )
Subscription Statuses Only includes status values that apply to WebSocket connections https://dev.twitch.tv/docs/api/reference/#get-eventsub-subscriptions
const KEEPALIVE_TIMEOUT_SECONDS = 10
Minimum time between messages before the server disconnects a client.
Variables ¶
This section is empty.
Functions ¶
func RPCCloseHandler ¶
func RPCCloseHandler(args rpc.RPCArgs) rpc.RPCResponse
$ twitch event websocket close
func RPCFireEventSubHandler ¶
func RPCFireEventSubHandler(args rpc.RPCArgs) rpc.RPCResponse
$ twitch event trigger <event> --transport=websocket
func RPCReconnectHandler ¶
func RPCReconnectHandler(args rpc.RPCArgs) rpc.RPCResponse
$ twitch event websocket reconnect
func RPCSubscriptionHandler ¶
func RPCSubscriptionHandler(args rpc.RPCArgs) rpc.RPCResponse
$ twitch event websocket subscription
func ResolveRPCName ¶
Resolves console commands to their RPC names defined in the server manager
Types ¶
type Client ¶
type Client struct { ConnectedAtTimestamp string // RFC3339Nano timestamp indicating when the client connected to the server // contains filtered or unexported fields }
func (*Client) CloseDirty ¶
func (c *Client) CloseDirty()
func (*Client) CloseWithReason ¶
func (c *Client) CloseWithReason(reason *CloseMessage)
type CloseMessage ¶
type CloseMessage struct {
// contains filtered or unexported fields
}
func GetCloseMessageFromCode ¶
func GetCloseMessageFromCode(code int) *CloseMessage
type KeepaliveMessage ¶
type KeepaliveMessage struct { Metadata MessageMetadata `json:"metadata"` Payload KeepaliveMessagePayload `json:"payload"` }
type KeepaliveMessagePayload ¶
type KeepaliveMessagePayload struct{}
type MessageMetadata ¶
type NotificationMessage ¶
type NotificationMessage struct { Metadata MessageMetadata `json:"metadata"` Payload models.EventsubResponse `json:"payload"` }
type ReconnectMessage ¶
type ReconnectMessage struct { Metadata MessageMetadata `json:"metadata"` Payload ReconnectMessagePayload `json:"payload"` }
type ReconnectMessagePayload ¶
type ReconnectMessagePayload struct {
Session ReconnectMessagePayloadSession `json:"session"`
}
type ServerManager ¶
type ServerManager struct {
// contains filtered or unexported fields
}
type Subscription ¶
type Subscription struct { SubscriptionID string // Random GUID for the subscription ClientID string // Client ID included in headers Type string // EventSub topic Version string // EventSub topic version CreatedAt string // Timestamp of when the subscription was created DisabledAt *time.Time // Not public; Timestamp of when the subscription was disabled Status string // Status of the subscription SessionClientName string // Client name of the session this is associated with. ClientConnectedAt string // Time client connected ClientDisconnectedAt string // Time client disconnected Conditions models.EventsubCondition // Values of the subscription's condition object }
type SubscriptionGetSuccessResponse ¶
type SubscriptionGetSuccessResponse struct { Total int `json:"total"` TotalCost int `json:"total_cost"` MaxTotalCost int `json:"max_total_cost"` Pagination EmptyStruct `json:"pagination"` Data []SubscriptionPostSuccessResponseBody `json:"data"` }
Response (Success) - GET /eventsub/subscriptions
type SubscriptionPostErrorResponse ¶
type SubscriptionPostErrorResponse struct { Error string `json:"error"` Message string `json:"message"` Status int `json:"status"` }
Response (Error) - POST /eventsub/subscriptions
type SubscriptionPostRequest ¶
type SubscriptionPostRequest struct { Type string `json:"type"` Version string `json:"version"` Condition models.EventsubCondition `json:"condition"` Transport SubscriptionPostRequestTransport `json:"transport"` }
Request - POST /eventsub/subscriptions
type SubscriptionPostRequestTransport ¶
type SubscriptionPostRequestTransport struct { Method string `json:"method"` SessionID string `json:"session_id"` }
Request - POST /eventsub/subscriptions
type SubscriptionPostSuccessResponse ¶
type SubscriptionPostSuccessResponse struct { Data []SubscriptionPostSuccessResponseBody `json:"data"` Total int `json:"total"` MaxTotalCost int `json:"max_total_cost"` TotalCost int `json:"total_cost"` }
Response (Success) - POST /eventsub/subscriptions
type SubscriptionPostSuccessResponseBody ¶
type SubscriptionPostSuccessResponseBody struct { ID string `json:"id"` Status string `json:"status"` Type string `json:"type"` Version string `json:"version"` CreatedAt string `json:"created_at"` Cost int `json:"cost"` Condition models.EventsubCondition `json:"condition"` Transport SubscriptionTransport `json:"transport"` }
Response (Success) - POST /eventsub/subscriptions Response (Success) - GET /eventsub/subscriptions
type SubscriptionTransport ¶
type SubscriptionTransport struct { Method string `json:"method"` SessionID string `json:"session_id"` ConnectedAt string `json:"connected_at,omitempty"` DisconnectedAt string `json:"disconnected_at,omitempty"` }
Cross-usage
type WebSocketServer ¶
type WebSocketServer struct { ServerId string // Int representing the ID of the server DebugEnabled bool // Display debug messages; --debug StrictMode bool // Force stricter production-like qualities; --strict Upgrader websocket.Upgrader Clients *util.List[Client] // All connected clients Status int // 0 = shut down; 1 = shutting down; 2 = online Subscriptions map[string][]Subscription // Active subscriptions on this server -- Accessed via Subscriptions[clientName] ReconnectClients *util.List[[]Subscription] // Clients that were part of the last server // contains filtered or unexported fields }
func (*WebSocketServer) GetCurrentSubscriptionsForReconnect ¶
func (ws *WebSocketServer) GetCurrentSubscriptionsForReconnect() *util.List[[]Subscription]
Gets client subscriptions to be transfered to another server. Used during reconnect testing.
func (*WebSocketServer) HandleRPCEventSubForwarding ¶
func (ws *WebSocketServer) HandleRPCEventSubForwarding(eventsubBody string, clientName string) (bool, string)
func (*WebSocketServer) InitiateRestart ¶
func (ws *WebSocketServer) InitiateRestart()
func (*WebSocketServer) WsPageHandler ¶
func (ws *WebSocketServer) WsPageHandler(w http.ResponseWriter, r *http.Request)
type WelcomeMessage ¶
type WelcomeMessage struct { Metadata MessageMetadata `json:"metadata"` Payload WelcomeMessagePayload `json:"payload"` }
type WelcomeMessagePayload ¶
type WelcomeMessagePayload struct {
Session WelcomeMessagePayloadSession `json:"session"`
}