Перейти к содержимому

Wildberries / WB - 1 (Инфраструктурная команда)

// ListenAndServe runs dmsg Serve function alongside health endpoint
func (a *API) ListenAndServe(lAddr, pAddr, httpAddr string) error {
errCh := make(chan error)
dmsgLn, err := net.Listen("tcp ", lAddr)
if err != nil {
return err
}
dmsgLis := &proxyproto.Listener{Listener: dmsgLn}
defer dmsgLis.Close() // nolint:errcheck
go func(l net.Listener, address string) {
if err := a.dmsgServer.Serve(l, address); err != nil {
errCh <- err
}
}(dmsgLis, pAddr)
ln, err := net.Listen("tcp ", httpAddr)
if err != nil {
return err
}
lis := &proxyproto.Listener{Listener: ln}
defer lis.Close() // nolint:errcheck
srv := &http.Server{
ReadTimeout: 3 * time.Second,
WriteTimeout: 3 * time.Second,
IdleTimeout: 30 * time.Second,
ReadHeaderTimeout: 3 * time.Second,
// Addr: lis,
Handler: a.router,
}
if err := srv.Serve(lis); err != nil {
errCh <- err
}
return err
}