
Demuz
01.02.2018
09:42:09
Почитал и получается что я получаю доступ к соединению, находясь только внури хендлера.
А если я нахожусь вне хендлера, то как мне получить экземпляр соединения и отправить ему сообщение?
Или например, в горилле я не понимаю как получить все соединения вебсокета?

Olzhas
01.02.2018
09:44:13
каналы?

Google

Demuz
01.02.2018
09:44:49
Не, зачем усложнять так.

Olzhas
01.02.2018
09:45:09
мне кажется, что это ты усложняешь

Demuz
01.02.2018
09:45:15
Просто думал эти вещи реализованы из коробки в этой библе, раз его так рекомендуют.
мне кажется, что это ты усложняешь
Ну хорошо. Давайте ваше мнение послушаем. Как получить список подключенных к сокету клиентов в горилле? И еще, как я могу усложнять, если еще оригинальный код примера не поменял?

Daniel
01.02.2018
09:47:00
список надо держать самому, в мапе, к примеру

Demuz
01.02.2018
09:47:43
Охренеть. Я еще на сокеты iris жаловался. )))))

Daniel
01.02.2018
09:49:56
А что не так-то?

Demuz
01.02.2018
09:53:03
А что не так-то?
Всё норм. Просто я горилла вебсокет с фреймворком вебсокетов попутал. В горилле в WS из коробки мало что есть, что помогло бы ускорить разработку.

Daniel
01.02.2018
09:54:59
именно для вебсокета я в горилле мало смысла вижу, да. юзаю golang.org/x/net/websocket

Demuz
01.02.2018
09:56:17
Сейчас попробую.

Daniel
01.02.2018
09:56:43
он не лучше, просто не тащит за собой гориллу

Google

Arch
01.02.2018
09:59:44
И еще много всяких плюшек, которые не умеет стандартная реализация
Я например создаю глобальную мапу с юидами клиентов и ссылкой на них, а в структуре клиента уже храню вебсокет

Daniel
01.02.2018
10:04:33

Arch
01.02.2018
10:05:30

Foxcool
01.02.2018
10:06:44
а тот вебсервер на го, который автоматом подгружает ссл из летсэнкрипта тоже что ли тормозной?

Daniel
01.02.2018
10:06:54

Foxcool
01.02.2018
10:07:20
https://github.com/mholt/caddy

Arch
01.02.2018
10:07:20

Daniel
01.02.2018
10:07:22

Vasily Romanov
01.02.2018
10:08:21

Daniel
01.02.2018
10:08:22

Arch
01.02.2018
10:08:27
создание соединения, конечно.
Все-таки по сути вебсокет соединение устанавливается раз и на долго, это на рест овер хттп, которому надо обрабатывать миллиарды соединений

Demuz
01.02.2018
10:10:07

Daniel
01.02.2018
10:10:44

Arch
01.02.2018
10:11:23

Daniel
01.02.2018
10:11:48

Arch
01.02.2018
10:12:15

Google

Daniel
01.02.2018
10:13:28
а! тогда понятно.
вообще, ответ существует, и он "криптография эллиптических кривых"

Arch
01.02.2018
10:13:30
Вот у меня задача слать дату с биржи клиентам, а это не кислая такая нагружка и надо это реализовать как - то так чтобы было все легко и не принужденно)))))

Daniel
01.02.2018
10:14:37
на RSA приемлемой скорости добиться не удастся. go - где-то 250 соединений в секунду на ядро, openssl - где-то 512

Arch
01.02.2018
10:14:49

Daniel
01.02.2018
10:16:15

Duck
01.02.2018
10:16:23
в мире го так же, как и везде, собственно. http.Get(), http.Post(), имхо, примерно то, что вам подойдет. В тело пишется набор байт, т.е. некоторый []byte, опять же как и везде. А дальше уже насколько вам фантазии хватит. Надо JSON, json.Marshall(), например...
Спасибо за развернутый ответ.

Arch
01.02.2018
10:17:03

Daniel
01.02.2018
10:18:35
так а что делает прослойка, если бек ребутнулся и соединения оборвал?

Arch
01.02.2018
10:20:27
А те в свою очередь отдают клиентам, те просто такой ретранслятор, да мы получаем небольшой оверхед во времени доставки данных ~6-10нс, но зато мы экономим на пересоздании подключений и когда упадем в следствии одновременного коннекта к нам тонны клиентов

Daniel
01.02.2018
10:24:27
у вас в одну сторону данные текут? просто маркетдата?
тогда вебсокет вам не нужен, а нужен Server-sent events

Daniel
01.02.2018
10:24:54
он сильно попроще, как протокол

Arch
01.02.2018
10:24:58
нет, есть еще запросы на дату

Daniel
01.02.2018
10:25:36
и вот если соединение с бекендом переустановилось - как это обрабатывается?
или есть сообщение навроде "у меня ребутнулось, перезапросите, че вам надо"?

DMITRY
01.02.2018
10:27:04
если не секрет как авторизовываете клиентов по WS ?

Daniel
01.02.2018
10:28:30
так там же все с get начинается. хочешь - basic, хочешь - на куках

Demuz
01.02.2018
10:31:21

Arch
01.02.2018
10:31:31
или есть сообщение навроде "у меня ребутнулось, перезапросите, че вам надо"?
на примежности есть своя база переданного и он возвращает предпоследний объект на котором все поломалось, меин собирает со всемх такие запросы и проливает всем, начиная с самого младшего, получается небольшое перекрытие, но зато есть возможность проверить что все норм, если не норм, то данные перезаписываются, можно запустить принудительный анализ

Google

Arch
01.02.2018
10:32:30

DMITRY
01.02.2018
10:34:42

Arch
01.02.2018
10:40:01

DMITRY
01.02.2018
10:44:56
а чем плоха такая схема авторизации?:
1 .Устанавливается соединение по WS с любым клиентом
2. Внутри ws соединения клиент должен передать в json логин и пароль
3. Если данные коректные то запоминаем websocket.Conn

Arch
01.02.2018
10:47:57
Можно и так, все зависит от задачи
у меня была реализована данныя схема, на одном из проектов, как практика позала не очень удобно
темболее вы уже установили соединение, потратили на него ресурсы, а оно висит и клиент не авторизуется

DMITRY
01.02.2018
10:48:54
Чем не удобна?

Arch
01.02.2018
10:49:21
Так набрался пул таких соединений и все, нормальным клиентам нет места

Атас
01.02.2018
10:49:44

Admin
ERROR: S client not available

DMITRY
01.02.2018
10:50:31
относительно нагрузки,не думаю что клиенты которые постоянно пытаются реконектнуться с неверными данными будут создавать большую нагрузку чем те которые висят на вебсокете
А какие ограничения на колл-во соединений?

Arch
01.02.2018
10:51:06
у вас по факту уже есть вебсокет соединение
которое уже что-то весит
и его надо как - то обслуживать и таких соединений можно наплодить и слать в них что угодно, что сервер у вас будет парсить и проверять на момент логина и пароля
попробуйте, помучаетесь и потом придумаете что - нибудь другое)
ну или оставите все как есть

DMITRY
01.02.2018
10:55:41
у вас не пошло из-за того что были нагрузки?

Google

DMITRY
01.02.2018
10:56:36
интересен опыт просто

Linux
01.02.2018
11:26:19
интересен опыт просто
Так же реализованно, поднято туча вебсокетов. При переподключении чекаются куки, если куки норм то разрешается подключиться в противном случае на старницу авторизации

Daniel
01.02.2018
11:27:47

Alexey
01.02.2018
11:38:21
https://monades.roperzh.com/concurrency-is-different-than-parallelism/
Concurrency - по-русски переводят?

Constantine
01.02.2018
11:40:08
нет

Aleksandr
01.02.2018
11:40:57

Alexey
01.02.2018
11:43:54
хм... сoncurrency лучше

Marlik
01.02.2018
11:44:12
Что-то юмора такого не понимаю. Создал базу, структуру к ней написал, всё отлично работает. Как только закидываю на сервер получаю
sql: Scan error on column index 3: converting driver.Value type <nil> ("<nil>") to a int64: invalid syntax
Я знаю как лечится ошибка, но как такое может быть?

Aleksandr
01.02.2018
11:44:43
что конкретно?

Marlik
01.02.2018
11:45:47
Почему эта ошибка не выскакивает на домашнем компутере, почему она выскакивает на сервере?

Michael
01.02.2018
11:46:13
хрустальный шар подсказывает - разный код

Aleksandr
01.02.2018
11:46:19
тысячи причин
когда ты обнаружишь причину конкретной этой ошибки, узнаешь в чем различие между локальным компом и продом

Vasily Romanov
01.02.2018
11:48:10
в поле null записано
в проде в базе

Marlik
01.02.2018
11:48:24

Vasily Romanov
01.02.2018
11:48:39
его нельзя напрямую в инт записать напрямую
искать в ггуле handling null values go database/sql

Aleksandr
01.02.2018
11:49:05
ось конечно не влияет

Marlik
01.02.2018
11:49:11

Aleksandr
01.02.2018
11:49:25