swaggerws

package module
v0.0.0-...-90aaa87 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2022 License: GPL-3.0 Imports: 11 Imported by: 0

README

Package swaggerws

Coverage Status

This package is designed to work with websocket in an understandable and transparent way via Rest Api server built using swagger.

Websocket interfaces

  • SocketManager
  • SocketPool
  • WebSocket

Swagger-restapi websocket implementation

  • SocketResponder

Documentation

Index

Constants

View Source
const (
	// MsgTypeInit Initialization message (the first message received by the socket handler).
	MsgTypeInit = "swaggerws:message_init"
	// MsgTypeSocket message from the websocket external client via socket.
	MsgTypeSocket = "swaggerws:message_socket"
)

Variables

View Source
var (
	ErrInternalServerError = errors.New("internal server error")
	ErrManagerDestroyed    = errors.New("socket manager is destroyed")

	ErrMessageStackOverflow = errors.New("socket message-stack is overflow")
	ErrSendStackOverflow    = errors.New("socket send-stack is overflow")

	ErrSocketIsClosed       = errors.New("socket is already closed")
	ErrSocketClosedByClient = errors.New("socket closed by client from other side")

	ErrPoolAlreadyInContainer  = errors.New("socket pool already exists in the container")
	ErrPoolNotFoundInContainer = errors.New("socket pool is not found in the container")

	ErrSocketAlreadyInPool  = errors.New("socket already exists in the pool")
	ErrSocketNotFoundInPool = errors.New("socket is not found in the pool")

	ErrResponderMiddlewareIsNil = errors.New("responder middleware function is nil")
)

Functions

func NewSocketResponder

func NewSocketResponder(req *http.Request, middleware ResponderMiddlewareFunc) middleware.Responder

NewSocketResponder Returns new SocketResponder.

Types

type ResponderMiddlewareFunc

type ResponderMiddlewareFunc = func(socket WebSocket, err error) bool

type SocketManager

type SocketManager interface {
	AppendPool(pool SocketPool) error
	Destroy() chan error
	GetOrCreatePool(poolID uuid.UUID) (SocketPool, bool, error)
	GetPool(poolID uuid.UUID) (SocketPool, error)
	IsDestroyed() bool
	IsReady() bool
}

func NewSocketManager

func NewSocketManager() SocketManager

NewSocketManager Returns a new websocket client manager.

type SocketPool

type SocketPool interface {
	AllSocketCount() int64
	AppendPool(SocketPool) error
	AppendSocket(WebSocket) error
	AssignSocketManager(SocketManager) SocketPool
	Clear()
	DeletePool(id uuid.UUID) error
	DeleteSocket(id uuid.UUID) error
	GetAllSockets() <-chan WebSocket
	GetID() uuid.UUID
	GetPool(uuid.UUID) (SocketPool, error)
	GetSocket(uuid.UUID) (WebSocket, error)
	Manager() SocketManager
	PoolsCount() int64
	PoolRange() <-chan SocketPool
	ResetManager() SocketPool
	SocketsCount() int64
	SocketRange() <-chan WebSocket
}

func NewSocketPool

func NewSocketPool(socketId uuid.UUID) SocketPool

type SocketResponder

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

func (*SocketResponder) WriteResponse

func (wsr *SocketResponder) WriteResponse(rw http.ResponseWriter, _ runtime.Producer)

WriteResponse Intercepts the response to the client over a websocket.

Also creates a new websocket.

type WebSocket

type WebSocket interface {
	AssignHandler(handler WebSocketHandlerFunc) WebSocket
	AssignPool(pool SocketPool) WebSocket
	Close(code int, reason string) error
	Handler() WebSocketHandlerFunc
	GetID() uuid.UUID
	IsClosed() bool
	Pool() SocketPool
	Read() *WebSocketMessage
	ResetPool() WebSocket
	PushMessage(message *WebSocketMessage) error
	Run() error
	Send(message []byte) error
	SetError(err error)
	SetID(id uuid.UUID) WebSocket
}

func NewWebSocket

func NewWebSocket(
	req *http.Request,
	rw http.ResponseWriter,
) (WebSocket, error)

type WebSocketClient

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

WebSocketClient is a connection from the client.

func (*WebSocketClient) AssignHandler

func (c *WebSocketClient) AssignHandler(handler WebSocketHandlerFunc) WebSocket

func (*WebSocketClient) AssignPool

func (c *WebSocketClient) AssignPool(pool SocketPool) WebSocket

func (*WebSocketClient) Close

func (c *WebSocketClient) Close(code int, reason string) (err error)

func (*WebSocketClient) GetID

func (c *WebSocketClient) GetID() uuid.UUID

func (*WebSocketClient) Handler

func (*WebSocketClient) IsClosed

func (c *WebSocketClient) IsClosed() bool

func (*WebSocketClient) Pool

func (c *WebSocketClient) Pool() SocketPool

func (*WebSocketClient) PushMessage

func (c *WebSocketClient) PushMessage(message *WebSocketMessage) error

PushMessage Emulates reading a message from a socket. The message will be put into the received message queue. Handler function will be called.

func (*WebSocketClient) Read

func (c *WebSocketClient) Read() *WebSocketMessage

func (*WebSocketClient) ResetPool

func (c *WebSocketClient) ResetPool() WebSocket

func (*WebSocketClient) Run

func (c *WebSocketClient) Run() error

func (*WebSocketClient) Send

func (c *WebSocketClient) Send(message []byte) (err error)

Send The message will be sent over the websocket.

func (*WebSocketClient) SetError

func (c *WebSocketClient) SetError(err error)

func (*WebSocketClient) SetID

func (c *WebSocketClient) SetID(id uuid.UUID) WebSocket

type WebSocketHandlerFunc

type WebSocketHandlerFunc = func(client WebSocket, err error)

type WebSocketMessage

type WebSocketMessage struct {
	Type string
	Msg  interface{}
}

Jump to

Keyboard shortcuts

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