coordinator

package
v0.0.0-...-f8853a5 Latest Latest
Warning

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

Go to latest
Published: Oct 1, 2026 License: BSD-3-Clause Imports: 22 Imported by: 0

Documentation

Overview

Package coordinator talks to the Stream Video coordinator: the REST call that joins a call and hands back SFU credentials, and the websocket that delivers call events.

Index

Constants

View Source
const AnyCall = "*"

AnyCall matches events for every call.

Variables

This section is empty.

Functions

func AwaitCallEvent

func AwaitCallEvent[T CallEvents](client EventInterceptorProvider, cid string, match func(T) bool) *event.EventAwaiter[T, models.WebsocketEvent]

AwaitCallEvent returns an awaiter for the next matching event of type T on the given call.

func AwaitEvent

func AwaitEvent[T Events](client EventInterceptorProvider, match func(T) bool) *event.EventAwaiter[T, models.WebsocketEvent]

AwaitEvent returns an awaiter for the next matching event of type T.

func IsRetryableError

func IsRetryableError(err error) bool

IsRetryableError reports whether err is worth retrying. Errors the coordinator did not classify -- network failures, timeouts -- are retryable.

Types

type CallEvents

type CallEvents interface {
	*models.BlockedUserEvent |
		*models.CallAcceptedEvent |
		*models.CallClosedCaptionsFailedEvent |
		*models.CallClosedCaptionsStartedEvent |
		*models.CallClosedCaptionsStoppedEvent |
		*models.CallCreatedEvent |
		*models.CallDTMFEvent |
		*models.CallDeletedEvent |
		*models.CallEndedEvent |
		*models.CallFrameRecordingFailedEvent |
		*models.CallFrameRecordingFrameReadyEvent |
		*models.CallFrameRecordingStartedEvent |
		*models.CallFrameRecordingStoppedEvent |
		*models.CallHLSBroadcastingFailedEvent |
		*models.CallHLSBroadcastingStartedEvent |
		*models.CallHLSBroadcastingStoppedEvent |
		*models.CallLiveStartedEvent |
		*models.CallMemberAddedEvent |
		*models.CallMemberRemovedEvent |
		*models.CallMemberUpdatedEvent |
		*models.CallMemberUpdatedPermissionEvent |
		*models.CallMissedEvent |
		*models.CallModerationBlurEvent |
		*models.CallModerationWarningEvent |
		*models.CallNotificationEvent |
		*models.CallReactionEvent |
		*models.CallRecordingFailedEvent |
		*models.CallRecordingReadyEvent |
		*models.CallRecordingStartedEvent |
		*models.CallRecordingStoppedEvent |
		*models.CallRejectedEvent |
		*models.CallRingEvent |
		*models.CallRtmpBroadcastFailedEvent |
		*models.CallRtmpBroadcastStartedEvent |
		*models.CallRtmpBroadcastStoppedEvent |
		*models.CallSessionEndedEvent |
		*models.CallSessionParticipantCountsUpdatedEvent |
		*models.CallSessionParticipantJoinedEvent |
		*models.CallSessionParticipantLeftEvent |
		*models.CallSessionStartedEvent |
		*models.CallStatsReportReadyEvent |
		*models.CallTranscriptionFailedEvent |
		*models.CallTranscriptionReadyEvent |
		*models.CallTranscriptionStartedEvent |
		*models.CallTranscriptionStoppedEvent |
		*models.CallUpdatedEvent |
		*models.CallUserFeedbackSubmittedEvent |
		*models.CallUserMutedEvent |
		*models.ClosedCaptionEvent |
		*models.CustomVideoEvent |
		*models.IngressErrorEvent |
		*models.IngressStartedEvent |
		*models.IngressStoppedEvent |
		*models.KickedUserEvent |
		*models.PermissionRequestEvent |
		*models.UnblockedUserEvent |
		*models.UpdatedCallPermissionsEvent
}

CallEvents constrains the events that belong to a specific call, i.e. those carrying a call_cid.

type Client

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

Client implements CoordinatorClientInterface.

func NewClient

func NewClient(apiKey, userID string, tokenProvider TokenProvider, handler Handler, opts ...Option) (*Client, error)

func (*Client) Close

func (c *Client) Close() error

func (Client) Connect

func (wsc Client) Connect(ctx context.Context, joinRequest *models.WSAuthMessage) (*models.ConnectedEvent, error)

Connect opens the coordinator websocket, authenticates with joinRequest and waits for the connection.ok event that carries the connection ID. There is no automatic reconnect: callers own that policy.

func (*Client) GetInterceptor

func (c *Client) GetInterceptor() *event.Store[models.WebsocketEvent]

GetInterceptor returns the event store the Handle*/Await* helpers register on.

func (*Client) JoinCall

func (c *Client) JoinCall(
	ctx context.Context,
	_type string,
	id string,
	joinCallRequest models.JoinCallRequest,
	connectionID *string,
) (models.JoinCallResponse, error)

JoinCall joins a call and returns the SFU credentials for it. This is the only coordinator endpoint the SDK calls.

func (*Client) RawHandler

func (c *Client) RawHandler(e models.WebsocketEvent)

RawHandler forwards an event to the interceptors without going through the typed Handler callbacks.

type CoordinatorClientInterface

type CoordinatorClientInterface interface {
	JoinCall(
		ctx context.Context,
		_type string,
		id string,
		joinCallRequest models.JoinCallRequest,
		connectionID *string,
	) (models.JoinCallResponse, error)

	Connect(
		ctx context.Context,
		joinRequest *models.WSAuthMessage,
	) (*models.ConnectedEvent, error)

	GetInterceptor() *event.Store[models.WebsocketEvent]

	Close() error
}

CoordinatorClientInterface is the coordinator surface the SDK depends on.

type Error

type Error struct {
	Code        int
	Message     string
	ShouldRetry bool
}

Error is a coordinator-reported error, carrying the SFU error code and whether the operation that produced it can be retried.

func NewError

func NewError(code int, message string, shouldRetry bool) *Error

func (*Error) Error

func (e *Error) Error() string

type EventInterceptorProvider

type EventInterceptorProvider interface {
	GetInterceptor() *event.Store[models.WebsocketEvent]
}

EventInterceptorProvider is implemented by anything that owns an event store, so the helpers below work with both the client and the SDK types embedding it.

type Events

type Events interface {
	*models.AppUpdatedEvent |
		*models.BlockedUserEvent |
		*models.CallAcceptedEvent |
		*models.CallClosedCaptionsFailedEvent |
		*models.CallClosedCaptionsStartedEvent |
		*models.CallClosedCaptionsStoppedEvent |
		*models.CallCreatedEvent |
		*models.CallDTMFEvent |
		*models.CallDeletedEvent |
		*models.CallEndedEvent |
		*models.CallFrameRecordingFailedEvent |
		*models.CallFrameRecordingFrameReadyEvent |
		*models.CallFrameRecordingStartedEvent |
		*models.CallFrameRecordingStoppedEvent |
		*models.CallHLSBroadcastingFailedEvent |
		*models.CallHLSBroadcastingStartedEvent |
		*models.CallHLSBroadcastingStoppedEvent |
		*models.CallLiveStartedEvent |
		*models.CallMemberAddedEvent |
		*models.CallMemberRemovedEvent |
		*models.CallMemberUpdatedEvent |
		*models.CallMemberUpdatedPermissionEvent |
		*models.CallMissedEvent |
		*models.CallModerationBlurEvent |
		*models.CallModerationWarningEvent |
		*models.CallNotificationEvent |
		*models.CallReactionEvent |
		*models.CallRecordingFailedEvent |
		*models.CallRecordingReadyEvent |
		*models.CallRecordingStartedEvent |
		*models.CallRecordingStoppedEvent |
		*models.CallRejectedEvent |
		*models.CallRingEvent |
		*models.CallRtmpBroadcastFailedEvent |
		*models.CallRtmpBroadcastStartedEvent |
		*models.CallRtmpBroadcastStoppedEvent |
		*models.CallSessionEndedEvent |
		*models.CallSessionParticipantCountsUpdatedEvent |
		*models.CallSessionParticipantJoinedEvent |
		*models.CallSessionParticipantLeftEvent |
		*models.CallSessionStartedEvent |
		*models.CallStatsReportReadyEvent |
		*models.CallTranscriptionFailedEvent |
		*models.CallTranscriptionReadyEvent |
		*models.CallTranscriptionStartedEvent |
		*models.CallTranscriptionStoppedEvent |
		*models.CallUpdatedEvent |
		*models.CallUserFeedbackSubmittedEvent |
		*models.CallUserMutedEvent |
		*models.ClosedCaptionEvent |
		*models.ConnectedEvent |
		*models.ConnectionErrorEvent |
		*models.CustomVideoEvent |
		*models.HealthCheckEvent |
		*models.IngressErrorEvent |
		*models.IngressStartedEvent |
		*models.IngressStoppedEvent |
		*models.KickedUserEvent |
		*models.PermissionRequestEvent |
		*models.UnblockedUserEvent |
		*models.UpdatedCallPermissionsEvent |
		*models.UserBannedEvent |
		*models.UserDeactivatedEvent |
		*models.UserDeletedEvent |
		*models.UserPresenceChangedEvent |
		*models.UserReactivatedEvent |
		*models.UserUnbannedEvent |
		*models.UserUpdatedEvent
}

Events constrains the event types HandleEvent and AwaitEvent accept.

type Handler

type Handler interface {
	OnAppUpdatedEvent(*models.AppUpdatedEvent)
	OnBlockedUserEvent(*models.BlockedUserEvent)
	OnCallAcceptedEvent(*models.CallAcceptedEvent)
	OnCallClosedCaptionsFailedEvent(*models.CallClosedCaptionsFailedEvent)
	OnCallClosedCaptionsStartedEvent(*models.CallClosedCaptionsStartedEvent)
	OnCallClosedCaptionsStoppedEvent(*models.CallClosedCaptionsStoppedEvent)
	OnCallCreatedEvent(*models.CallCreatedEvent)
	OnCallDTMFEvent(*models.CallDTMFEvent)
	OnCallDeletedEvent(*models.CallDeletedEvent)
	OnCallEndedEvent(*models.CallEndedEvent)
	OnCallFrameRecordingFailedEvent(*models.CallFrameRecordingFailedEvent)
	OnCallFrameRecordingFrameReadyEvent(*models.CallFrameRecordingFrameReadyEvent)
	OnCallFrameRecordingStartedEvent(*models.CallFrameRecordingStartedEvent)
	OnCallFrameRecordingStoppedEvent(*models.CallFrameRecordingStoppedEvent)
	OnCallHLSBroadcastingFailedEvent(*models.CallHLSBroadcastingFailedEvent)
	OnCallHLSBroadcastingStartedEvent(*models.CallHLSBroadcastingStartedEvent)
	OnCallHLSBroadcastingStoppedEvent(*models.CallHLSBroadcastingStoppedEvent)
	OnCallLiveStartedEvent(*models.CallLiveStartedEvent)
	OnCallMemberAddedEvent(*models.CallMemberAddedEvent)
	OnCallMemberRemovedEvent(*models.CallMemberRemovedEvent)
	OnCallMemberUpdatedEvent(*models.CallMemberUpdatedEvent)
	OnCallMemberUpdatedPermissionEvent(*models.CallMemberUpdatedPermissionEvent)
	OnCallMissedEvent(*models.CallMissedEvent)
	OnCallModerationBlurEvent(*models.CallModerationBlurEvent)
	OnCallModerationWarningEvent(*models.CallModerationWarningEvent)
	OnCallNotificationEvent(*models.CallNotificationEvent)
	OnCallReactionEvent(*models.CallReactionEvent)
	OnCallRecordingFailedEvent(*models.CallRecordingFailedEvent)
	OnCallRecordingReadyEvent(*models.CallRecordingReadyEvent)
	OnCallRecordingStartedEvent(*models.CallRecordingStartedEvent)
	OnCallRecordingStoppedEvent(*models.CallRecordingStoppedEvent)
	OnCallRejectedEvent(*models.CallRejectedEvent)
	OnCallRingEvent(*models.CallRingEvent)
	OnCallRtmpBroadcastFailedEvent(*models.CallRtmpBroadcastFailedEvent)
	OnCallRtmpBroadcastStartedEvent(*models.CallRtmpBroadcastStartedEvent)
	OnCallRtmpBroadcastStoppedEvent(*models.CallRtmpBroadcastStoppedEvent)
	OnCallSessionEndedEvent(*models.CallSessionEndedEvent)
	OnCallSessionParticipantCountsUpdatedEvent(*models.CallSessionParticipantCountsUpdatedEvent)
	OnCallSessionParticipantJoinedEvent(*models.CallSessionParticipantJoinedEvent)
	OnCallSessionParticipantLeftEvent(*models.CallSessionParticipantLeftEvent)
	OnCallSessionStartedEvent(*models.CallSessionStartedEvent)
	OnCallStatsReportReadyEvent(*models.CallStatsReportReadyEvent)
	OnCallTranscriptionFailedEvent(*models.CallTranscriptionFailedEvent)
	OnCallTranscriptionReadyEvent(*models.CallTranscriptionReadyEvent)
	OnCallTranscriptionStartedEvent(*models.CallTranscriptionStartedEvent)
	OnCallTranscriptionStoppedEvent(*models.CallTranscriptionStoppedEvent)
	OnCallUpdatedEvent(*models.CallUpdatedEvent)
	OnCallUserFeedbackSubmittedEvent(*models.CallUserFeedbackSubmittedEvent)
	OnCallUserMutedEvent(*models.CallUserMutedEvent)
	OnClosedCaptionEvent(*models.ClosedCaptionEvent)
	OnConnectedEvent(*models.ConnectedEvent)
	OnConnectionErrorEvent(*models.ConnectionErrorEvent)
	OnCustomVideoEvent(*models.CustomVideoEvent)
	OnHealthCheckEvent(*models.HealthCheckEvent)
	OnIngressErrorEvent(*models.IngressErrorEvent)
	OnIngressStartedEvent(*models.IngressStartedEvent)
	OnIngressStoppedEvent(*models.IngressStoppedEvent)
	OnKickedUserEvent(*models.KickedUserEvent)
	OnPermissionRequestEvent(*models.PermissionRequestEvent)
	OnUnblockedUserEvent(*models.UnblockedUserEvent)
	OnUpdatedCallPermissionsEvent(*models.UpdatedCallPermissionsEvent)
	OnUserBannedEvent(*models.UserBannedEvent)
	OnUserDeactivatedEvent(*models.UserDeactivatedEvent)
	OnUserDeletedEvent(*models.UserDeletedEvent)
	OnUserPresenceChangedEvent(*models.UserPresenceChangedEvent)
	OnUserReactivatedEvent(*models.UserReactivatedEvent)
	OnUserUnbannedEvent(*models.UserUnbannedEvent)
	OnUserUpdatedEvent(*models.UserUpdatedEvent)
}

Handler receives every event the coordinator websocket delivers. Embed NoopHandler to implement only the callbacks you care about.

type NoopHandler

type NoopHandler struct{}

NoopHandler ignores every event.

func (NoopHandler) OnAppUpdatedEvent

func (NoopHandler) OnAppUpdatedEvent(*models.AppUpdatedEvent)

func (NoopHandler) OnBlockedUserEvent

func (NoopHandler) OnBlockedUserEvent(*models.BlockedUserEvent)

func (NoopHandler) OnCallAcceptedEvent

func (NoopHandler) OnCallAcceptedEvent(*models.CallAcceptedEvent)

func (NoopHandler) OnCallClosedCaptionsFailedEvent

func (NoopHandler) OnCallClosedCaptionsFailedEvent(*models.CallClosedCaptionsFailedEvent)

func (NoopHandler) OnCallClosedCaptionsStartedEvent

func (NoopHandler) OnCallClosedCaptionsStartedEvent(*models.CallClosedCaptionsStartedEvent)

func (NoopHandler) OnCallClosedCaptionsStoppedEvent

func (NoopHandler) OnCallClosedCaptionsStoppedEvent(*models.CallClosedCaptionsStoppedEvent)

func (NoopHandler) OnCallCreatedEvent

func (NoopHandler) OnCallCreatedEvent(*models.CallCreatedEvent)

func (NoopHandler) OnCallDTMFEvent

func (NoopHandler) OnCallDTMFEvent(*models.CallDTMFEvent)

func (NoopHandler) OnCallDeletedEvent

func (NoopHandler) OnCallDeletedEvent(*models.CallDeletedEvent)

func (NoopHandler) OnCallEndedEvent

func (NoopHandler) OnCallEndedEvent(*models.CallEndedEvent)

func (NoopHandler) OnCallFrameRecordingFailedEvent

func (NoopHandler) OnCallFrameRecordingFailedEvent(*models.CallFrameRecordingFailedEvent)

func (NoopHandler) OnCallFrameRecordingFrameReadyEvent

func (NoopHandler) OnCallFrameRecordingFrameReadyEvent(*models.CallFrameRecordingFrameReadyEvent)

func (NoopHandler) OnCallFrameRecordingStartedEvent

func (NoopHandler) OnCallFrameRecordingStartedEvent(*models.CallFrameRecordingStartedEvent)

func (NoopHandler) OnCallFrameRecordingStoppedEvent

func (NoopHandler) OnCallFrameRecordingStoppedEvent(*models.CallFrameRecordingStoppedEvent)

func (NoopHandler) OnCallHLSBroadcastingFailedEvent

func (NoopHandler) OnCallHLSBroadcastingFailedEvent(*models.CallHLSBroadcastingFailedEvent)

func (NoopHandler) OnCallHLSBroadcastingStartedEvent

func (NoopHandler) OnCallHLSBroadcastingStartedEvent(*models.CallHLSBroadcastingStartedEvent)

func (NoopHandler) OnCallHLSBroadcastingStoppedEvent

func (NoopHandler) OnCallHLSBroadcastingStoppedEvent(*models.CallHLSBroadcastingStoppedEvent)

func (NoopHandler) OnCallLiveStartedEvent

func (NoopHandler) OnCallLiveStartedEvent(*models.CallLiveStartedEvent)

func (NoopHandler) OnCallMemberAddedEvent

func (NoopHandler) OnCallMemberAddedEvent(*models.CallMemberAddedEvent)

func (NoopHandler) OnCallMemberRemovedEvent

func (NoopHandler) OnCallMemberRemovedEvent(*models.CallMemberRemovedEvent)

func (NoopHandler) OnCallMemberUpdatedEvent

func (NoopHandler) OnCallMemberUpdatedEvent(*models.CallMemberUpdatedEvent)

func (NoopHandler) OnCallMemberUpdatedPermissionEvent

func (NoopHandler) OnCallMemberUpdatedPermissionEvent(*models.CallMemberUpdatedPermissionEvent)

func (NoopHandler) OnCallMissedEvent

func (NoopHandler) OnCallMissedEvent(*models.CallMissedEvent)

func (NoopHandler) OnCallModerationBlurEvent

func (NoopHandler) OnCallModerationBlurEvent(*models.CallModerationBlurEvent)

func (NoopHandler) OnCallModerationWarningEvent

func (NoopHandler) OnCallModerationWarningEvent(*models.CallModerationWarningEvent)

func (NoopHandler) OnCallNotificationEvent

func (NoopHandler) OnCallNotificationEvent(*models.CallNotificationEvent)

func (NoopHandler) OnCallReactionEvent

func (NoopHandler) OnCallReactionEvent(*models.CallReactionEvent)

func (NoopHandler) OnCallRecordingFailedEvent

func (NoopHandler) OnCallRecordingFailedEvent(*models.CallRecordingFailedEvent)

func (NoopHandler) OnCallRecordingReadyEvent

func (NoopHandler) OnCallRecordingReadyEvent(*models.CallRecordingReadyEvent)

func (NoopHandler) OnCallRecordingStartedEvent

func (NoopHandler) OnCallRecordingStartedEvent(*models.CallRecordingStartedEvent)

func (NoopHandler) OnCallRecordingStoppedEvent

func (NoopHandler) OnCallRecordingStoppedEvent(*models.CallRecordingStoppedEvent)

func (NoopHandler) OnCallRejectedEvent

func (NoopHandler) OnCallRejectedEvent(*models.CallRejectedEvent)

func (NoopHandler) OnCallRingEvent

func (NoopHandler) OnCallRingEvent(*models.CallRingEvent)

func (NoopHandler) OnCallRtmpBroadcastFailedEvent

func (NoopHandler) OnCallRtmpBroadcastFailedEvent(*models.CallRtmpBroadcastFailedEvent)

func (NoopHandler) OnCallRtmpBroadcastStartedEvent

func (NoopHandler) OnCallRtmpBroadcastStartedEvent(*models.CallRtmpBroadcastStartedEvent)

func (NoopHandler) OnCallRtmpBroadcastStoppedEvent

func (NoopHandler) OnCallRtmpBroadcastStoppedEvent(*models.CallRtmpBroadcastStoppedEvent)

func (NoopHandler) OnCallSessionEndedEvent

func (NoopHandler) OnCallSessionEndedEvent(*models.CallSessionEndedEvent)

func (NoopHandler) OnCallSessionParticipantCountsUpdatedEvent

func (NoopHandler) OnCallSessionParticipantCountsUpdatedEvent(*models.CallSessionParticipantCountsUpdatedEvent)

func (NoopHandler) OnCallSessionParticipantJoinedEvent

func (NoopHandler) OnCallSessionParticipantJoinedEvent(*models.CallSessionParticipantJoinedEvent)

func (NoopHandler) OnCallSessionParticipantLeftEvent

func (NoopHandler) OnCallSessionParticipantLeftEvent(*models.CallSessionParticipantLeftEvent)

func (NoopHandler) OnCallSessionStartedEvent

func (NoopHandler) OnCallSessionStartedEvent(*models.CallSessionStartedEvent)

func (NoopHandler) OnCallStatsReportReadyEvent

func (NoopHandler) OnCallStatsReportReadyEvent(*models.CallStatsReportReadyEvent)

func (NoopHandler) OnCallTranscriptionFailedEvent

func (NoopHandler) OnCallTranscriptionFailedEvent(*models.CallTranscriptionFailedEvent)

func (NoopHandler) OnCallTranscriptionReadyEvent

func (NoopHandler) OnCallTranscriptionReadyEvent(*models.CallTranscriptionReadyEvent)

func (NoopHandler) OnCallTranscriptionStartedEvent

func (NoopHandler) OnCallTranscriptionStartedEvent(*models.CallTranscriptionStartedEvent)

func (NoopHandler) OnCallTranscriptionStoppedEvent

func (NoopHandler) OnCallTranscriptionStoppedEvent(*models.CallTranscriptionStoppedEvent)

func (NoopHandler) OnCallUpdatedEvent

func (NoopHandler) OnCallUpdatedEvent(*models.CallUpdatedEvent)

func (NoopHandler) OnCallUserFeedbackSubmittedEvent

func (NoopHandler) OnCallUserFeedbackSubmittedEvent(*models.CallUserFeedbackSubmittedEvent)

func (NoopHandler) OnCallUserMutedEvent

func (NoopHandler) OnCallUserMutedEvent(*models.CallUserMutedEvent)

func (NoopHandler) OnClosedCaptionEvent

func (NoopHandler) OnClosedCaptionEvent(*models.ClosedCaptionEvent)

func (NoopHandler) OnConnectedEvent

func (NoopHandler) OnConnectedEvent(*models.ConnectedEvent)

func (NoopHandler) OnConnectionErrorEvent

func (NoopHandler) OnConnectionErrorEvent(*models.ConnectionErrorEvent)

func (NoopHandler) OnCustomVideoEvent

func (NoopHandler) OnCustomVideoEvent(*models.CustomVideoEvent)

func (NoopHandler) OnHealthCheckEvent

func (NoopHandler) OnHealthCheckEvent(*models.HealthCheckEvent)

func (NoopHandler) OnIngressErrorEvent

func (NoopHandler) OnIngressErrorEvent(*models.IngressErrorEvent)

func (NoopHandler) OnIngressStartedEvent

func (NoopHandler) OnIngressStartedEvent(*models.IngressStartedEvent)

func (NoopHandler) OnIngressStoppedEvent

func (NoopHandler) OnIngressStoppedEvent(*models.IngressStoppedEvent)

func (NoopHandler) OnKickedUserEvent

func (NoopHandler) OnKickedUserEvent(*models.KickedUserEvent)

func (NoopHandler) OnPermissionRequestEvent

func (NoopHandler) OnPermissionRequestEvent(*models.PermissionRequestEvent)

func (NoopHandler) OnUnblockedUserEvent

func (NoopHandler) OnUnblockedUserEvent(*models.UnblockedUserEvent)

func (NoopHandler) OnUpdatedCallPermissionsEvent

func (NoopHandler) OnUpdatedCallPermissionsEvent(*models.UpdatedCallPermissionsEvent)

func (NoopHandler) OnUserBannedEvent

func (NoopHandler) OnUserBannedEvent(*models.UserBannedEvent)

func (NoopHandler) OnUserDeactivatedEvent

func (NoopHandler) OnUserDeactivatedEvent(*models.UserDeactivatedEvent)

func (NoopHandler) OnUserDeletedEvent

func (NoopHandler) OnUserDeletedEvent(*models.UserDeletedEvent)

func (NoopHandler) OnUserPresenceChangedEvent

func (NoopHandler) OnUserPresenceChangedEvent(*models.UserPresenceChangedEvent)

func (NoopHandler) OnUserReactivatedEvent

func (NoopHandler) OnUserReactivatedEvent(*models.UserReactivatedEvent)

func (NoopHandler) OnUserUnbannedEvent

func (NoopHandler) OnUserUnbannedEvent(*models.UserUnbannedEvent)

func (NoopHandler) OnUserUpdatedEvent

func (NoopHandler) OnUserUpdatedEvent(*models.UserUpdatedEvent)

type Option

type Option func(*options)

func ApiURL

func ApiURL(apiURL string) Option

ApiURL overrides the coordinator REST endpoint.

func WithLogger

func WithLogger(l logger.ILogger) Option

WithLogger sets the logger. Without it the client logs nothing.

func WithVersionHeader

func WithVersionHeader(v string) Option

WithVersionHeader sets the SDK version reported to the coordinator.

func WithWsURL

func WithWsURL(wsURL string) Option

WithWsURL overrides the coordinator websocket endpoint.

func WithoutWebsocket

func WithoutWebsocket() Option

WithoutWebsocket disables the coordinator event websocket. The join REST call still works; the client just receives no coordinator events.

type ReadEvent

type ReadEvent struct {
	Event models.WebsocketEvent
}

ReadEvent is a decoded event received from the coordinator.

type RemoveHandler

type RemoveHandler func()

RemoveHandler unregisters an event handler.

func HandleCallEvent

func HandleCallEvent[T CallEvents](client EventInterceptorProvider, cid string, onEvent func(T)) RemoveHandler

HandleCallEvent calls onEvent for every event of type T belonging to cid, or to any call when cid is AnyCall.

func HandleEvent

func HandleEvent[T Events](client EventInterceptorProvider, onEvent func(T)) RemoveHandler

HandleEvent calls onEvent for every event of type T.

type TokenProvider

type TokenProvider func(userID string) (string, error)

TokenProvider returns a Stream JWT for the given user.

func StaticTokenProvider

func StaticTokenProvider(token string) TokenProvider

StaticTokenProvider returns a TokenProvider that always yields the same token.

type WriteEvent

type WriteEvent struct {
	Event any
}

WriteEvent is anything the client sends on the coordinator websocket.

Directories

Path Synopsis
Package models provides primitives to interact with the openapi HTTP API.
Package models provides primitives to interact with the openapi HTTP API.

Jump to

Keyboard shortcuts

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