Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EventMultiService ¶
type EventMultiService struct { proto.UnimplementedEventMultiServiceServer // contains filtered or unexported fields }
EventMultiService обрабатывает соединения от клиентских приложений
func NewEventMultiService ¶
func NewEventMultiService( ctx context.Context, logger zerolog.Logger, clients *collections.ConcurrentMap[string, *model.ClientEvents], notify chan<- model.Notification, userService users.UserService, ) *EventMultiService
NewEventMultiService создает сервис обслуживания клиентских приложений
func (*EventMultiService) EventStreaming ¶
func (s *EventMultiService) EventStreaming(stream proto.EventMultiService_EventStreamingServer) error
EventStreaming получает двунаправленный поток отк клиента, достает из метаданных идентификаторы, идентифицирует клиента. В случае валидного клиента создает структуру ClientEvents, добавляет ее в общий словарь, чтобы обработчики команд от telegram могли обратиться к конкретному клиентскому приложению. Также запускается циклический опрос сообщений от клиентского приложения и перенаправление сообщений в каналы, привязанные к конкретному пользователю. Идентификация пользователя происходит в 2 этап: 1. При установке соединения проверяется валидность сертификата пользователя через tls handshake 2. Проверяется существование пользователя с указанным именем и идентификатором сертификата
type Services ¶
type Services struct {
UserService users.UserService
}
Services содержит настроенный сервисный слой приложения