websocket

package
v0.11.29 Latest Latest
Warning

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

Go to latest
Published: Sep 25, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Content managed by Project Forge, see [projectforge.md] for details.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func OnMessage

func OnMessage(ctx context.Context, s *Service, connID uuid.UUID, message *Message, logger util.Logger) error

Sends a message to a provided Connection ID.

func ReadSocketLoop added in v0.7.0

func ReadSocketLoop(connID uuid.UUID, sock *websocket.Conn, onMessage func(m *Message) error, onDisconnect func() error, logger util.Logger) error

Types

type Channel

type Channel struct {
	Key          string      `json:"key"`
	ConnIDs      []uuid.UUID `json:"connIDs"`
	LastUpdate   time.Time   `json:"lastUpdate"`
	MessageCount int         `json:"messageCount"`
}

type ConnectEvent

type ConnectEvent func(s *Service, conn *Connection, logger util.Logger) error

Function used to handle incoming connections.

type Connection

type Connection struct {
	ID       uuid.UUID     `json:"id"`
	Profile  *user.Profile `json:"profile,omitempty"`
	Svc      string        `json:"svc,omitempty"`
	ModelID  *uuid.UUID    `json:"modelID,omitempty"`
	Channels []string      `json:"channels,omitempty"`
	Started  time.Time     `json:"started,omitempty"`
	// contains filtered or unexported fields
}

Represents a user's WebSocket session.

func NewConnection

func NewConnection(svc string, profile *user.Profile, socket *websocket.Conn) *Connection

Creates a new Connection.

func (*Connection) Close

func (c *Connection) Close() error

Closes the backing socket.

func (*Connection) Read

func (c *Connection) Read() ([]byte, error)

Reads bytes from this Connection, you should probably use a helper method.

func (*Connection) String added in v0.7.0

func (c *Connection) String() string

func (*Connection) ToStatus

func (c *Connection) ToStatus() *Status

Transforms this Connection to a serializable Status object.

func (*Connection) Username added in v0.8.17

func (c *Connection) Username() string

func (*Connection) Write

func (c *Connection) Write(b []byte) error

Writes bytes to this Connection, you should probably use a helper method.

type Handler

type Handler func(ctx context.Context, s *Service, conn *Connection, svc string, cmd string, param json.RawMessage, logger util.Logger) error

Function used to handle incoming messages.

type Message

type Message struct {
	From    *uuid.UUID      `json:"from,omitempty"`
	Channel string          `json:"channel,omitempty"`
	Cmd     string          `json:"cmd"`
	Param   json.RawMessage `json:"param"`
}

Common message struct for passing a service, command and parameter.

func NewMessage

func NewMessage(userID *uuid.UUID, ch string, cmd string, param any) *Message

Constructor.

func (*Message) String

func (m *Message) String() string

Returns a string in "cmd" format, ignoring the param.

type OnlineUpdate

type OnlineUpdate struct {
	UserID    uuid.UUID `json:"userID"`
	Connected bool      `json:"connected"`
}

Message for updates of a user's online status.

type Service

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

Manages all Connection objects.

func NewService

func NewService(onOpen ConnectEvent, handler Handler, onClose ConnectEvent) *Service

Creates a new service with the provided handler functions.

func (*Service) Broadcast added in v0.11.15

func (s *Service) Broadcast(message *Message, logger util.Logger, except ...uuid.UUID) error

func (*Service) ChannelList

func (s *Service) ChannelList(params *filter.Params) []string

Returns an array of channels based on the parameters.

func (*Service) Close

func (s *Service) Close()

func (*Service) Count

func (s *Service) Count() int

Total number of all connections managed by this service.

func (*Service) Disconnect

func (s *Service) Disconnect(connID uuid.UUID, logger util.Logger) (bool, error)

Removes a Connection from this Service.

func (*Service) GetAllMembers added in v0.6.22

func (s *Service) GetAllMembers(key string) []*Connection

func (*Service) GetByID

func (s *Service) GetByID(id uuid.UUID, logger util.Logger) *Status

Returns a Status representing the Connection with the provided ID.

func (*Service) GetChannel added in v0.6.22

func (s *Service) GetChannel(ch string) *Channel

func (*Service) GetConnection added in v0.6.22

func (s *Service) GetConnection(id uuid.UUID) *Connection

func (*Service) GetOnline

func (s *Service) GetOnline(key string) []uuid.UUID

func (*Service) Join

func (s *Service) Join(connID uuid.UUID, ch string, logger util.Logger) (bool, error)

func (*Service) Leave

func (s *Service) Leave(connID uuid.UUID, ch string, logger util.Logger) (bool, error)

func (*Service) ReadLoop

func (s *Service) ReadLoop(ctx context.Context, connID uuid.UUID, logger util.Logger) error

func (*Service) Register

func (s *Service) Register(profile *user.Profile, c *websocket.Conn, logger util.Logger) (*Connection, error)

Registers a new Connection for this Service using the provided user.Profile and websocket.Conn.

func (*Service) RegisterTap added in v0.7.0

func (s *Service) RegisterTap(rc *fasthttp.RequestCtx, logger util.Logger) (uuid.UUID, error)

func (*Service) RemoveTap added in v0.7.0

func (s *Service) RemoveTap(connID uuid.UUID, logger util.Logger)

func (*Service) Status

func (s *Service) Status() ([]string, []*Connection, []uuid.UUID)

func (*Service) Upgrade added in v0.7.0

func (s *Service) Upgrade(
	ctx context.Context, rc *fasthttp.RequestCtx, channel string, profile *user.Profile, logger util.Logger,
) error

func (*Service) UserList

func (s *Service) UserList(params *filter.Params) Statuses

Returns an array of Connection statuses based on the parameters.

func (*Service) WriteChannel

func (s *Service) WriteChannel(message *Message, logger util.Logger, except ...uuid.UUID) error

func (*Service) WriteMessage

func (s *Service) WriteMessage(connID uuid.UUID, message *Message, logger util.Logger) error

func (*Service) WriteTap added in v0.7.0

func (s *Service) WriteTap(message *Message, logger util.Logger)

type Status

type Status struct {
	ID       uuid.UUID `json:"id"`
	Username string    `json:"username"`
	Channels []string  `json:"channels"`
}

Serializable representation of a Connection.

type Statuses

type Statuses = []*Status

type UpdateMemberParams

type UpdateMemberParams struct {
	ID   uuid.UUID `json:"id"`
	Role string    `json:"role"`
}

Jump to

Keyboard shortcuts

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