client

package
v1.6.13 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2023 License: MIT Imports: 9 Imported by: 0

README

Socket клиент.

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

type Client interface {
	net.Conn
	Use(middlewares ...middleware.Func) Client
	SetConnector(connector net.Conn)
}

Socket клиент зависит от компонента протоколы TCP/UDP. Так же пакет предоставляет компонент мониторинга активности соединения.

Объект конфигурации.
type Config struct {
	WriteTimeout time.Duration
	ReadTimeout  time.Duration
}

Описание полей:

Поле Описание Значение по умолчанию
WriteTimeout Таймаут для записи данных в сокет, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.timeout.write
- переменная окружения CLIENT_SOCKET_TIMEOUT_WRITE
- значение в конфиг файле client.socket.timeout.write
10s
ReadTimeout Таймаут для чтения данных из сокет, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.timeout.read
- переменная окружения CLIENT_SOCKET_TIMEOUT_READ
- значение в конфиг файле client.socket.timeout.read
10s
Middleware.

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

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

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

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

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

Documentation

Index

Constants

View Source
const (
	WriteTimeoutFieldName = "client.socket.timeout.write"
	ReadTimeoutFieldName  = "client.socket.timeout.read"

	WriteTimeoutDefault = 10 * time.Second
	ReadTimeoutDefault  = 10 * time.Second
)

Variables

View Source
var Component = &app.Component{
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewConfig,
			func(config *Config, configurator configurator.Configurator, appConfig *app.Config, conn net.Conn, informer logger.Informer) Client {
				c := NewWithConfigurator(config, configurator, conn, informer)

				c.Use(append([]middleware.Func{middleware.Logger(informer)}, middleware.ReadWriteCounter(appConfig, informer)...)...)

				return c
			},
		)
	},
	BindFlags: func(flagSet *pflag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.DurationVar(&config.WriteTimeout, WriteTimeoutFieldName, WriteTimeoutDefault, "socket write timeout")
			flagSet.DurationVar(&config.ReadTimeout, ReadTimeoutFieldName, ReadTimeoutDefault, "socket read timeout")
		})
	},
}

Functions

This section is empty.

Types

type Client

type Client interface {
	net.Conn
	Use(middlewares ...middleware.Func) Client
	SetConnector(connector net.Conn)
}

func New

func New(config *Config, conn net.Conn, informer logger.Informer) Client

func NewWithConfigurator

func NewWithConfigurator(config *Config, configurator configurator.Configurator, conn net.Conn, informer logger.Informer) Client

type Config

type Config struct {
	WriteTimeout time.Duration
	ReadTimeout  time.Duration
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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