Sergey
Ор
Pawel
нуёптваюмать
Oleg
что для websocket использовать?
Oleg
https://github.com/gorilla/websocket/issues/426 пугает
Vadim
Привет. Сори за офтоп, но надо срочно. Напишите в лс, кто пользуется we chat больше месяца.
Dmitry
мейнтейнеры
О, а ты тут каким ветром?
Vadim
Спасибо, @altsab. Мое уважение этому парню.
Anonymous
https://play.golang.org/p/NEtUP4tM9yR
Вчера весь день срались на эту тему там буква А в конце латинская
Anonymous
https://play.golang.org/p/NEtUP4tM9yR
https://play.golang.org/p/4qard5VJndS
Pawel
Вчера весь день срались на эту тему там буква А в конце латинская
это придирки ящитаю. ясно же что в строке "Лёша" последняя руна 2 байта.
Aleksandr
это придирки ящитаю. ясно же что в строке "Лёша" последняя руна 2 байта.
только все ровно наоборот. У автора теста там английская a
freezlite
method chaining в го это норм ?
freezlite
или в этом языке некрасиво ?
Мерль
method chaining в го это норм ?
норм посмотри resty в качестве примера
freezlite
router.POST("/somethit") .GET("/somethingelse") И router.POST("/somethit") router.GET("/somethingelse")
Мерль
они логически не связаны
.
method chaining в го это норм ?
Памяти будет конечно больше занимать
freezlite
ладно, другой вопрос, есть куча хендлеров которые пользуются 3 базами данных
freezlite
делать структуру для каждого или где-то передавать базу?
freezlite
много дублирующего кода someHandler{Db: psql, redis: redis}
freezlite
но сейчас через глобальые переменные в пакете тоже не ок
freezlite
можно DI заюзать, но я не люблю DI в го
freezlite
с другой стороны передавать в структуру хендлера параметры делает код более понятным, что он использует
Igor
Знатоки gin-gonic, подскажите пожалуйста, как сделать так, чтобы данные из хедера POST-запроса были доступны и в middleware и в конечной функции? Проблема в том, что если я делаю в middleware c.BindJSON(&myStruct) то данные вычитываются(пропадают) из контекста.
Kirill
CoffeeGo
Kirill
Жуть
Igor
А там не так? 😂
вопрос не понятен.
Alik
хотел подобное делать сам. зачёт ))
Kirill
вопрос не понятен.
Ну - у меня в миддлварах доступен тот же контекст, что и в хендлере, а исходя из вопроса, в gin не так
Kirill
Данные
Igor
секунду, проверяю кое-что
Igor
и, если их не биндить в middleware, они доходят до конечного хендлера.
Igor
Я понимаю, что можно из в middleware считать, и перезапихнуть в контекст, но мне это кажется костылями.
Roman
что для websocket использовать?
зависит от задания, что тебе конкретно нужно? сомневаюсь что нужен чистый низкоуровневый вебсокет, может скорее нужна bidirectional связь?
Oleg
мне нужна полнодуплексная шина сообщений) как можно высокоуровневая)
Oleg
вижу твое творчество. Используется где?
Oleg
а где пример веб-клиента?
Roman
вижу твое творчество. Используется где?
сейчас используется у нас в проде (fitcat.pro) и ещё недавно https://www.drom.ru/ подкатили
Savely
раньше открывался
Aleksandr
первый не открыть
webwire положил)
Roman
а где пример веб-клиента?
https://github.com/qbeon/webwire-go/tree/master/examples/chatroom имеется JS example клиент: https://github.com/qbeon/webwire-js/tree/master/examples/chatroom-client-vue
Savely
maintenance))
заглушка бы не помешала
Savely
я сначала подумал опять проделки ркн
Roman
заглушка бы не помешала
фронт ещё не в проде
Roman
webwire положил)
webwire != HTTP 😃
Aleksandr
webwire != HTTP 😃
а вот скажи, это замена горилле?
Oleg
какие еще варианты есть? огласите весь список, пожалуйста
Roman
а вот скажи, это замена горилле?
нет, это более высокий уровень абстракции. Под капотом тот-же горилла вебсокет вебсокет это тупая труба, она умеет только подключиться и слать сообщения туда сюда.. вебсокет по умолчанию понятия не имеет об request-response, аутентификации, сессиях, авто-восстановление соединения и сессии и т.д. в прочем, надеюсь что достаточно хорошо описал features: https://github.com/qbeon/webwire-go#features
Anonymous
И как мы можем об этом узнать?
Я не знаю, у меня была такая же претензия, но думаю нужно было включить шерлока догадаться что ответа 15 нет и дедукцией вычислить что буква А латиницей написана
Aleksandr
ок. скажи, насколько webwire тяжелый. если я например решу внедрить ws в своем пете, это будет оправданный выбор?
Roman
Я не знаю, у меня была такая же претензия, но думаю нужно было включить шерлока догадаться что ответа 15 нет и дедукцией вычислить что буква А латиницей написана
там проблема в том, что тест подразумевает что правильного ответа может и не быть, поэтому я ничего не выбрал, думал так надо, а оказывается вопрос через чур коварный
Roman
ок. скажи, насколько webwire тяжелый. если я например решу внедрить ws в своем пете, это будет оправданный выбор?
тяжёлый? в каком конкретно смысле тяжёлый? с точки зрения кода? с точки зрения performance'а? traffic overhead?
Aleksandr
скорее функциональный оверхед
Roman
скорее функциональный оверхед
он по сути умеет всё что умеет тупой сокет и HTTP/2, но предоставляет тебе возможность самому определить формат общения, будь то UTF8 text, JSON, Thrift, Protobuf, plain binary... у webwire сообщений довольно малый overhead, 9-10 байт для запросов, 3-4 байт для сигналов сигналы отличаются от простых message'ей тем что несут информацию о кодировке сообщения и имя для route'инга
Roman
скорее функциональный оверхед
а интерфейс довольно простой. Имплементируешь интерфейс сервера/клиента и там всё более менее интуитивно. от concurrent access'а все интерфейсы взаимодействия с connection'ами, сервером, клиентом, сессиями и т.д. защищены
Roman
по производительности: https://github.com/qbeon/webwire-go/issues/17#issuecomment-401216669 ещё не идеально, но 10к rps на 10к соединениях тянет без особых проблем
Igor
ну — это ожидаемый костыль, да
Но не подходящий, потому что в middleware мы ещё не знаем в какую именно структуру парсить данные из запроса. В каждом хендлере - происходит c.BindJSON в свою структуру.
Kirill
по-моему, для такой архитектуры джин не оч заходит
Igor
по-моему, для такой архитектуры джин не оч заходит
ну а зачем там middleware придуманы тогда?
last seen recently 🇹🇼
Здравствуйте, есть ли Go канал для новичков, по типу python_beginners?
🏁Александр
тут задвайте