ws

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Nov 29, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MSG_CLIENT_CONNECT          = "Client connected id:%s name:%s to Hub:%s"
	MSG_CLIENT_DISCONNECT       = "Client disconnected %s name:%s to Hub:%s"
	MSG_CONNECT_SUCCESSFULLY    = "Connected successfully"
	MSG_DISCONNECT_SUCCESSFULLY = "Disconnected successfully"
	ERR_SERVER_NOT_FOUND        = "Server not found"
	ERR_CLIENT_NOT_FOUND        = "Client not found"
	ERR_CLIENT_IS_CLOSED        = "Client is closed"
	ERR_NOT_WS_SERVICE          = "Not websocket service"
	ERR_NOT_DEFINE_CLIENTID     = "Not define clientId"
	ERR_NOT_DEFINE_USERNAME     = "Not define username"
	ERR_NOT_CONNECT_WS          = "Not connect socket"
	ERR_CLIENT_DISCONNECTED     = "Client disconnected"
	ERR_CHANNEL_NOT_FOUND       = "Channel not found"
	ERR_CHANNEL_NOT_SUBSCRIBERS = "Channel not subscribers - %s"
	ERR_CHANNEL_EMPTY           = "Channel is empty"
	ERR_QUEUE_EMPTY             = "Queue is empty"
	ERR_PARAM_NOT_FOUND         = "Param not found"
	ERR_CLIENT_ID_EMPTY         = "Client id is empty"
	ERR_MESSAGE_UNFORMATTED     = "Message unformatted"
	ERR_REDISADAPTER_NOT_FOUND  = "Redis adapter not found"
	ERR_INVALID_ID              = "Invalid id"
	ERR_INVALID_NAME            = "Invalid name"
	PARAMS_UPDATED              = "Params updated"
)
View Source
const ServiceName = "Websocket"

Variables

This section is empty.

Functions

This section is empty.

Types

type Adapter

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

type AdapterConfig added in v0.0.4

type AdapterConfig struct {
	Url       string
	TypeNode  TypeNode
	Reconcect int
	Header    http.Header
}

type Channel

type Channel struct {
	Name        string        `json:"name"`
	Subscribers []*Subscriber `json:"subscribers"`
	// contains filtered or unexported fields
}

* * Channel *

func (*Channel) Count

func (c *Channel) Count() int

* * Count return the number of subscribers * @return int *

type Client

type Client struct {
	Channels  map[string]func(Message)
	Attempts  *race.Value
	Connected *race.Value
	// contains filtered or unexported fields
}

func NewClient

func NewClient(config *ClientConfig) (*Client, error)

* * NewClient * @config config ConectPatams * @return erro *

func (*Client) Close

func (c *Client) Close()

* * Close *

func (*Client) Connect

func (c *Client) Connect() error

* * Connect * @return error *

func (*Client) DirectMessage

func (c *Client) DirectMessage(msg Message)

* * DirectMessage * @param msg Message *

func (*Client) From

func (c *Client) From() et.Json

* * From * @return et.Json *

func (*Client) Listener

func (c *Client) Listener()

* * read *

func (*Client) Ping

func (c *Client) Ping()

* * Ping *

func (*Client) Publish

func (c *Client) Publish(channel string, message interface{})

* * Publish a message to a channel * @param channel string * @param message interface{} *

func (*Client) Queue

func (c *Client) Queue(channel, queue string, reciveFn func(Message))

* * Queue to a channel * @param channel, queue string * @param reciveFn func(message.Message) *

func (*Client) Reconnect

func (c *Client) Reconnect()

func (*Client) ReconnectCallback

func (c *Client) ReconnectCallback()

* * ReconnectCallback *

func (*Client) SendMessage

func (c *Client) SendMessage(clientId string, message interface{}) error

* * SendMessage * @param clientId string * @param message interface{} * @return error *

func (*Client) SetDirectMessageCallback

func (c *Client) SetDirectMessageCallback(reciveFn func(Message))

* * SetDirectMessageCallback * @param reciveFn func(message.Message) *

func (*Client) SetFrom

func (c *Client) SetFrom(name string) error

* * SetFrom * @param config et.Json * @return error *

func (*Client) SetReconnectCallback

func (c *Client) SetReconnectCallback(reciveFn func(c *Client))

* * SetReconnectCallback * @param reciveFn func() *

func (*Client) Stack

func (c *Client) Stack(channel string, reciveFn func(Message))

* * Stack to a channel * @param channel string * @param reciveFn func(message.Message) *

func (*Client) Subscribe

func (c *Client) Subscribe(channel string, reciveFn func(Message))

* * Subscribe to a channel * @param channel string * @param reciveFn func(message.Message) *

func (*Client) Unsubscribe

func (c *Client) Unsubscribe(channel string)

* * Unsubscribe to a channel * @param channel string *

type ClientConfig

type ClientConfig struct {
	ClientId  string
	Name      string
	Url       string
	Header    http.Header
	Reconnect int
}

func (*ClientConfig) From

func (s *ClientConfig) From() et.Json

* * From * @return et.Json *

type Hub

type Hub struct {
	Id   string
	Name string
	Host string
	// contains filtered or unexported fields
}

func NewHub

func NewHub() *Hub

* * NewHub * @return *Hub *

func ServerHttp

func ServerHttp(port int, mode, masterURL string) *Hub

* * ServerHttp * @params port int * @params mode string * @params master string * @params schema string * @params path string * @return *Hub *

func (*Hub) Close

func (h *Hub) Close()

* * Close *

func (*Hub) ClusterPublish added in v0.0.4

func (h *Hub) ClusterPublish(channel string, msg Message)

* * ClusterUnSubscribed * @param sub channel string *

func (*Hub) ClusterSubscribed added in v0.0.4

func (h *Hub) ClusterSubscribed(channel string)

* * ClusterSubscribed * @param channel string *

func (*Hub) ClusterUnSubscribed added in v0.0.4

func (h *Hub) ClusterUnSubscribed(channel string)

* * ClusterUnSubscribed * @param sub channel string *

func (*Hub) Describe

func (h *Hub) Describe() et.Json

func (*Hub) DrainChannel

func (h *Hub) DrainChannel(channel, queue string) error

* * DrainChannel * @param channel *Channel *

func (*Hub) From

func (h *Hub) From() et.Json

* * Identify the hub * @return et.Json *

func (*Hub) GetChanel

func (h *Hub) GetChanel(name string) *Channel

* * GetChanel * @param name string * @return *Channel *

func (*Hub) GetChannels

func (h *Hub) GetChannels(name, queue string) et.Items

* * GetChannels of the hub * @param key string * @return et.Items *

func (*Hub) GetClients

func (h *Hub) GetClients(key string) et.Items

* * GetClients of the hub * @param key string * @return et.Items *

func (*Hub) HttpConnect

func (h *Hub) HttpConnect(w http.ResponseWriter, r *http.Request)

* * HttpConnect connect to the server using the http * @param w http.ResponseWriter * @param r *http.Request *

func (*Hub) HttpDescribe

func (h *Hub) HttpDescribe(w http.ResponseWriter, r *http.Request)

* * HttpGetPublications * @param w http.ResponseWriter * @param r *http.Request *

func (*Hub) HttpGetPublications

func (h *Hub) HttpGetPublications(w http.ResponseWriter, r *http.Request)

* * HttpGetPublications * @param w http.ResponseWriter * @param r *http.Request *

func (*Hub) HttpGetSubscribers

func (h *Hub) HttpGetSubscribers(w http.ResponseWriter, r *http.Request)

* * HttpGetSubscribers * @param w http.ResponseWriter * @param r *http.Request *

func (*Hub) HttpStream added in v0.0.4

func (h *Hub) HttpStream(w http.ResponseWriter, r *http.Request)

* * HttpStream connect to the server using the http * @param w http.ResponseWriter * @param r *http.Request *

func (*Hub) InitMaster added in v0.0.4

func (h *Hub) InitMaster()

* * InitMaster * @return *Hub *

func (*Hub) IsRun

func (h *Hub) IsRun() bool

* * IsRun * @return bool *

func (*Hub) Join added in v0.0.4

func (h *Hub) Join(config AdapterConfig) error

* * Join * @param config *ClientConfig *

func (*Hub) Live

func (h *Hub) Live()

* * Live *

func (*Hub) NewChannel

func (h *Hub) NewChannel(name string, duration time.Duration) *Channel

* * NewChannel * @param name string * @param duration time.Duration * @return *Channel *

func (*Hub) NewQueue

func (h *Hub) NewQueue(name, queue string, duration time.Duration) *Queue

* * NewQueue * @param name string * @param duration time.Duration * @return *Queue *

func (*Hub) Publish

func (h *Hub) Publish(channel, queue string, msg Message, ignored []string, from et.Json)

* * Publish a message to a channel * @param channel string * @param msg Message * @param ignored []string * @param from et.Json * @return error *

func (*Hub) QueueSubscribe

func (h *Hub) QueueSubscribe(clientId string, channel, queue string) error

* * QueueSubscribe * @param clientId string * @param channel string * @param queue string * @return error *

func (*Hub) SendMessage

func (h *Hub) SendMessage(clientId string, msg Message) error

* * SendMessage * @param clientId string * @param msg Message * @return error *

func (*Hub) SetName

func (h *Hub) SetName(name string)

* * SetName * @param name string *

func (*Hub) Stack

func (h *Hub) Stack(clientId string, channel string) error

* * Stack * @param clientId string * @param channel string * @return error *

func (*Hub) Start

func (h *Hub) Start()

* * Start *

func (*Hub) Subscribe

func (h *Hub) Subscribe(clientId string, channel string) error

* * Subscribe * @param clientId string * @param channel string * @return error *

func (*Hub) Unsubscribe

func (h *Hub) Unsubscribe(clientId string, channel, queue string) error

* * Unsubscribe a client from hub channels * @param clientId string * @param channel string * @return error *

type Message

type Message struct {
	Created_at time.Time   `json:"created_at"`
	Id         string      `json:"id"`
	From       et.Json     `json:"from"`
	To         string      `json:"to"`
	Ignored    []string    `json:"ignored"`
	Data       interface{} `json:"data"`
	Channel    string      `json:"channel"`
	Queue      string      `json:"queue"`
	Tp         et.Json     `json:"tp"`
	// contains filtered or unexported fields
}

func DecodeMessage

func DecodeMessage(data []byte) (Message, error)

* * DecodeMessage * @param []byte * @return Message *

func NewMessage

func NewMessage(from et.Json, message interface{}, tp TpMessage) Message

* * NewMessage * @param et.Json * @param interface{} * @param TpMessage * @return Message *

func (Message) Encode

func (e Message) Encode() ([]byte, error)

* * Encode return the message as byte array * @return []byte *

func (Message) ToJson

func (e Message) ToJson() et.Json

* * ToJson return the message as et.Json * @return et.Json *

func (Message) ToString

func (e Message) ToString() string

* * ToString return the message as string * @return string *

type Queue

type Queue struct {
	Name        string        `json:"name"`
	Queue       string        `json:"queue"`
	Turn        int           `json:"turn"`
	Subscribers []*Subscriber `json:"subscribers"`
	// contains filtered or unexported fields
}

func (*Queue) Count

func (c *Queue) Count() int

* * Count return the number of subscribers * @return int *

type Subscriber

type Subscriber struct {
	Created_at time.Time           `json:"created_at"`
	Id         string              `json:"id"`
	Name       string              `json:"name"`
	Addr       string              `json:"addr"`
	Channels   map[string]*Channel `json:"channels"`
	Queue      map[string]*Queue   `json:"queue"`
	// contains filtered or unexported fields
}

func (*Subscriber) From

func (c *Subscriber) From() et.Json

* * From * @return et.Json *

type TpMessage

type TpMessage int
const (
	TpPing           TpMessage = iota // 0
	TpSetFrom                         // 1
	TpSubscribe                       // 2
	TpQueueSubscribe                  // 3
	TpStack                           // 4
	TpUnsubscribe                     // 5
	TpPublish                         // 6
	TpDirect                          // 7
	TpConnect                         // 8
	TpDisconnect                      // 9
)

func ToTpMessage

func ToTpMessage(s string) TpMessage

func (TpMessage) String

func (s TpMessage) String() string

func (TpMessage) ToJson

func (s TpMessage) ToJson() et.Json

type TypeNode added in v0.0.4

type TypeNode int
const (
	NodeWorker TypeNode = iota
	NodeMaster
)

func (TypeNode) String added in v0.0.4

func (t TypeNode) String() string

func (TypeNode) ToJson added in v0.0.4

func (t TypeNode) ToJson() et.Json

type WsMessage

type WsMessage struct {
	Type    string      `json:"type"`
	Payload interface{} `json:"payload"`
}

Jump to

Keyboard shortcuts

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