websocket

package module
v0.0.0-...-4ebbf47 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2023 License: MIT Imports: 8 Imported by: 0

README

Websocket

Installation

go get github.com/go-fires/websocket

Usage

see: example

License

The MIT License (MIT). Please see License File for more information.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	TextMessage   = websocket.TextMessage
	BinaryMessage = websocket.BinaryMessage
	PingMessage   = websocket.PingMessage
	PongMessage   = websocket.PongMessage
	CloseMessage  = websocket.CloseMessage
)

Functions

This section is empty.

Types

type ChannelHub

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

func NewChannelHub

func NewChannelHub() *ChannelHub

func (*ChannelHub) Read

func (c *ChannelHub) Read() <-chan *Message

func (*ChannelHub) Recv

func (c *ChannelHub) Recv() chan<- *Message

type Emitter

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

func NewEmitter

func NewEmitter() *Emitter

NewEmitter create a new emitter

func (*Emitter) Count

func (e *Emitter) Count() int

Count return the number of subscribers

func (*Emitter) Emit

func (e *Emitter) Emit(message *Message)

Emit emit a message to all subscribers

func (*Emitter) Subscribe

func (e *Emitter) Subscribe(subscriber Subscriber)

Subscribe subscribe a subscriber

func (*Emitter) Unsubscribe

func (e *Emitter) Unsubscribe(subscriber Subscriber)

Unsubscribe unsubscribe a subscriber

type Engine

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

func NewEngine

func NewEngine(hub Hub, handler Handler) *Engine

func (*Engine) Broadcast

func (e *Engine) Broadcast(msg *Message)

func (*Engine) Handle

func (e *Engine) Handle(socketer *Socketer)

Handle handle a socket

func (*Engine) Start

func (e *Engine) Start()

type Handler

type Handler interface {
	Opened(socketer Socketable)
	Closed(socketer Socketable)
	Message(socketer Socketable, message *Message)
	Error(socketer Socketable, err error)
}

type Hub

type Hub interface {
	Recv() chan<- *Message
	Read() <-chan *Message
}

type Message

type Message struct {
	Type    int      `json:"type"`
	Payload *Payload `json:"payload"`
}

type Payload

type Payload struct {
	Channel string      `json:"channel"`
	Event   string      `json:"event"`
	Data    interface{} `json:"data"`
}

func (*Payload) Marshal

func (p *Payload) Marshal() ([]byte, error)

func (*Payload) Unmarshal

func (p *Payload) Unmarshal(payload []byte) error

type Publisher

type Publisher interface {
	ID() string
	Read() <-chan *Message
	Push(message *Message)
}

type Socketable

type Socketable interface {
	Subscriber
	Publisher

	Closed() <-chan struct{}
	Error() <-chan error
}

type Socketer

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

func NewSocket

func NewSocket(conn *websocket.Conn) *Socketer

func NewSocketWithHttp

func NewSocketWithHttp(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*Socketer, error)

NewSocketWithHttp create socket with http

func (*Socketer) Channels

func (s *Socketer) Channels() []string

func (*Socketer) Close

func (s *Socketer) Close()

Close socket

func (*Socketer) Closed

func (s *Socketer) Closed() <-chan struct{}

Closed return closed channel

func (*Socketer) Error

func (s *Socketer) Error() <-chan error

func (*Socketer) ID

func (s *Socketer) ID() string

ID return socket id

func (*Socketer) In

func (s *Socketer) In(channel string) bool

func (*Socketer) Join

func (s *Socketer) Join(channel string) error

func (*Socketer) Leave

func (s *Socketer) Leave(channel string) error

func (*Socketer) LeaveAll

func (s *Socketer) LeaveAll() error

func (*Socketer) Push

func (s *Socketer) Push(message *Message)

Push message to recv channel

func (*Socketer) Read

func (s *Socketer) Read() <-chan *Message

Read return read from client channel

func (*Socketer) Recv

func (s *Socketer) Recv() chan<- *Message

Recv return recv from emitter channel

type Subscriber

type Subscriber interface {
	ID() string
	Recv() chan<- *Message

	Join(channel string) error
	Leave(channel string) error
	LeaveAll() error
	In(channel string) bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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