server

package
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2023 License: MIT Imports: 13 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

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

Middleware.

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

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

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

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{
	Constructor: func(container container.Container) error {
		return container.Provide(func(limiter limiter.Limiter, logger logger.Logger, appConfig *app.Config, listener listener.Listener) Server {
			s := New(limiter, logger, listener)

			s.Use(append([]middleware.Func{middleware.Logger(logger)}, middleware.ReadWriteCounter(appConfig, logger)...)...)

			return s
		})
	},
	BindFlags: nil,
	Serve: func(c container.Container) error {
		server, err := container.Get[Server](c)
		if err != nil {
			return err
		}

		closer, err := container.Get[closer.Closer](c)
		if err != nil {
			return err
		}

		return server.Serve(closer.GetContext())
	},
}

Functions

This section is empty.

Types

type Server

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

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