websocket

package
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

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

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

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

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

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

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

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

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

Package websocket - 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

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

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
}

func NewConnection

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

func (*Connection) Close

func (c *Connection) Close() error

func (*Connection) Read

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

func (*Connection) String added in v0.7.0

func (c *Connection) String() string

func (*Connection) ToStatus

func (c *Connection) ToStatus() *Status

func (*Connection) Username added in v0.8.17

func (c *Connection) Username() string

func (*Connection) Write

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

type Handler

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

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"`
}

func NewMessage

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

func (*Message) String

func (m *Message) String() string

type OnlineUpdate

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

type Service

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

func NewService

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

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

func (*Service) Close

func (s *Service) Close()

func (*Service) Count

func (s *Service) Count() int

func (*Service) Disconnect

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

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

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)

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

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"`
}

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