Pawel
Anonymous
fasthttp реально быстрее работает чем дефолтный net/http?
Pawel
а тебе реально это надо?
Anonymous
Anonymous
Если можно сделать быстрее, то почему бы и нет?))
Anonymous
Anonymous
Как понять "не является узким местом"?
Daniel
Anonymous
🙄
Alexander
в сеть или в диск есть больше шансов уперется, чем в роутер
Anonymous
Daniel
но есть и недостатки
Daniel
да полный интернет
Kirill
Нет http2 и из коробки ws
Kirill
То, что в голову приходит первым
Kirill
Но если последнее в опенсорце лежит, то первое можно вкрутить при большом желании
Aliaksandr
в сервере нет поддержки стриминга запросов - весь запрос читается в память перед вызовом RequestHandler
в клиенте нет поддержки стриминга ответов - весь ответ читается в память
можно напроться на грабли с использованием ресурсов после их перезаписи
Aliaksandr
типа data race'ы всякие
Kirill
Aliaksandr
т.е. для работы с видеофайлами лучше использовать тet/http - там поддержка стриминга получше. Для всяких http-based API fasthttp обычно нормально подходит, т.к. там запросы/ответы не очень большие
Aliaksandr
стриминг ответов в сервере есть. Нет стриминга запросов
Kirill
А запросы у меня по размеру лимитированы везде, где только можно
Aliaksandr
ну тогда ок
Pawel
Aliaksandr 👍спасибо за отклик
Denys
всем привет, возник такой вопрос: если есть примерно следующая структура директорий:
src-|>
|>application
—--|>
|>user (package 'user')
|>platform (package 'platform')
...
|>domain
—--|>
|>user (package 'user')
|>platform (package 'platform')
придется давать алиасы для пакетов. нормально ли такое наименование пакетов?
возможно кто-то посоветует по-другому называть пакеты?
Denys
есть возможность например в application не делать директорий, а размещать сразу go-файлы
тогда там пакет будет application
Aliaksandr
appUser, domanUser
Aliaksandr
потом, если в голову придут названия получше, просто переименуете. В го легко делать переименование пакетов :)
Denis
есть два варианта: либо не разделять на domain/application и все что к юзеру привязано складывать в один пакет user. второй вариант - раскладывать все по функциональным пакетам, например у тебя есть репозиторий юзеров для монги - mongo.UserRepository и т.д.
Denis
Aliaksandr
сильно не заморачиваться, а начать с чего-нибудь. Потом видно будет
Aliaksandr
главное потом не забывать о рефакторинге
Aliaksandr
и не бояться его )
Fastumkruk
Как в этой библиотеке github.com/toby3d/telegram авторизировать бота через свой http.Client, а точнее прокси?
Kirill
@toby3d
Maxim
Maxim
Сейчас каждый метод проходит через request() в котором собирается нужного формата запрос и отправляется. Никаких серверов/роутеров
Maxim
Вру, роутер есть, но только локальный, для приёма вебхуков
Kirill
Kirill
собственно, профит
Maxim
Да, пожалуй надо будет запилить
Kirill
ты сможешь в request() юзать соответствующий клиент
Maxim
Затестите и дайте знать на GitHub, если будут ещё проблемы/предложения
Fastumkruk
Fastumkruk
Maxim
Либо через метод, либо руками назначить:
myBot.Client = myNewClient
Результат идентичный
Maxim
Если клиента нет, то используется дефолтный
Kirill
Kirill
Есть риск сделать очень плохо
Maxim
При использовании tg.New(accessToken) используется стандартный клиент. Если при инициализации не сработал bot.getMe(), то вернётся структура Bot и ошибка. Можно будет переназначить клиент через bot.SetClient(newClient) и попытаться проверить соединение через bot.GetMe() отдельно.
P.S.: Не забудьте назначить bot.User через bot.GetMe() чтобы не возникало паник при обращении!
Fastumkruk
Maxim
Fastumkruk
Maxim
Fastumkruk
Fastumkruk
Maxim
Maxim
Maxim
Это же довольно очевидно, что для использования/назначения чего-либо из/в структуры нужно для начала её инициализировать в какую-нибудь переменную:
bot := new(telegram.Bot)
bot.SetClient(myClient)
bot.AccessToken = "myToken"
bot.User, err = bot.GetMe()
или
bot := telegram.New("myToken")
bot.SetClient(myClient)
Fastumkruk
Fastumkruk
Maxim
Maxim
Есть отдельный пакет для конвертации даты из http в fasthttp и обратно, но он предназначен для мягкой миграции с одного пакета на другой, а не постоянного использования, так как наносит урон по производительности
Fastumkruk
Fastumkruk
Maxim
Fastumkruk
@kirilldanshin
Maxim
Aliaksandr
Думаю, нужно переопределить HostClient.Dial