server

package
v1.9.18 Latest Latest
Warning

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

Go to latest
Published: Jun 18, 2024 License: MIT Imports: 10 Imported by: 0

README

Socket сервер.

Компонент предоставляет готовый и настроенный socket сервер. Реализует интерфейс Server, который доступен в контейнере объектов.

type Server interface {
	io.Closer
	Use(middlewares ...middleware.Func) Server
	Serve(ctx context.Context) error
	SetHandler(handler handler.Func)
}

При новом подключении, сервер вызывает метод HandlerFunc и передает в него экземпляр нового подключения.

type HandlerFunc func(connection *Connection) error

type Connection struct {
    Conn net.Conn
}

func (connection *Connection) Context() context.Context

Socket клиент зависит от следующих компонентов:

Middleware.

Пакет предоставляет следующие готовые middleware, которые добавляются автоматически:

  • Logger - логирует информацию о чтении/записи данных в/из сокета;
  • ReadWriteCounter - добавляет метрику о кол. записанных/прочитанных данных.
Метрики.

Метрики добавляются автоматически при добавлении middleware:

go_socket_server_bytes - кол. записанных/прочитанных данных. Доступные лейблы в метрике:

  • app - имя приложения;
  • action - операция чтения/записи, read - чтение, write - запись;
  • host - ip адрес хоста, с которым происходит обмен данными
  • protocol - протокол tcp/udp, по которому происходит обмен.
Дополнительные компоненты

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		logger.Component,
		limiter.Component,
		listener.Component,
		runner.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provide(New)
	}),
	Run: app.Run(func(container container.Container) error {
		return container.Invoke(func(server Server, runner runner.Runner) error {
			return runner.AddProcesses(server)
		})
	}),
}

Functions

func IsErrorClosed

func IsErrorClosed(err error) bool

Types

type Connection

type Connection struct {
	Conn net.Conn
	// contains filtered or unexported fields
}

func NewConnection

func NewConnection(ctx context.Context, conn net.Conn) *Connection

func (*Connection) Context

func (connection *Connection) Context() context.Context

type Handler

type Handler interface {
	Handle(connection *Connection) error
}

type HandlerFunc

type HandlerFunc func(connection *Connection) error

func (HandlerFunc) Handle

func (handler HandlerFunc) Handle(connection *Connection) error

type Middleware

type Middleware interface {
	Middleware(next Handler) Handler
}

type MiddlewareFunc

type MiddlewareFunc func(next Handler) Handler

func (MiddlewareFunc) Middleware

func (middleware MiddlewareFunc) Middleware(handler Handler) Handler

type Server

type Server interface {
	io.Closer
	runner.Process

	Use(middlewares ...Middleware) Server
	Serve(ctx context.Context) error
	SetHandler(handler Handler)
}

func New

func New(limiter limiter.Limiter, logger logger.Logger, listener listener.Listener) Server

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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