@proGO

Страница 1193 из 1674
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
именно для вебсокета я в горилле мало смысла вижу, да. юзаю golang.org/x/net/websocket
А чем вам горила не нравится? Судя по описанию они умеет компрессию и ssl

И еще много всяких плюшек, которые не умеет стандартная реализация

Я например создаю глобальную мапу с юидами клиентов и ссылкой на них, а в структуре клиента уже храню вебсокет

Daniel
01.02.2018
10:04:33
А чем вам горила не нравится? Судя по описанию они умеет компрессию и ssl
ssl плохо умеет сам golang (примерно вдвое медленнее, чем openssl) а компрессия обычно не нужна - данных очень мало

Arch
01.02.2018
10:05:30
ssl плохо умеет сам golang (примерно вдвое медленнее, чем openssl) а компрессия обычно не нужна - данных очень мало
Вдвое медленнее что? Создание соединения или замедляет его в два раза?

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

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
Всё норм. Просто я горилла вебсокет с фреймворком вебсокетов попутал. В горилле в WS из коробки мало что есть, что помогло бы ускорить разработку.
я не в курсе задачи, но посмотрите на https://github.com/gobwas/ws на этом работают вебсокеты в почте mail.ru, статья https://habrahabr.ru/company/mailru/blog/331784/ вдруг под задачу лучше подойдёт

Daniel
01.02.2018
10:08:22
Так мб создание соединения не так кретично для сокет соединения, вы не думали об этом?
я об этом думал весь 2016 год. и для нас это было так критично, что мы свой собственный протокол передачи данных с шифрованием создали.

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

Demuz
01.02.2018
10:10:07
я не в курсе задачи, но посмотрите на https://github.com/gobwas/ws на этом работают вебсокеты в почте mail.ru, статья https://habrahabr.ru/company/mailru/blog/331784/ вдруг под задачу лучше подойдёт
Задача - простота работы с веб сокетами без заморочек как в iris/websocket, но чтобы умел работать со стандартным http.ResponseWriter и http.Request

Daniel
01.02.2018
10:10:44
А сфера, в которой так критично шифрование и еще и скорость открытия соединений?
у нас были миллионы клиентов, и рестарт сервера вызывал массовый реконнект. чтобы обеспечить этот реконнект в приемлемых временных рамках возможностей go ssl не хватало. openssl, впрочем, тоже :)

Arch
01.02.2018
10:11:23
Daniel
01.02.2018
10:11:48
Arch
01.02.2018
10:12:15
у нас были миллионы клиентов, и рестарт сервера вызывал массовый реконнект. чтобы обеспечить этот реконнект в приемлемых временных рамках возможностей go ssl не хватало. openssl, впрочем, тоже :)
Вы не подумайте, я не наезжаю, не спорю, просто у меня сейчас тоже стоит выбор, мне надо много данных гонять по сокету с большим количеством соединений, вот и интересуюсь опытом людей, которые прошли это

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

Arch
01.02.2018
10:13:30
а вот по скольки? расчеты показывали кластер на 120 машин
Тут по скольки распределять, надо конкретно от задачи плясать, сколько критично, сколько нет и тд

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

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

Daniel
01.02.2018
10:16:15
Вот у меня задача слать дату с биржи клиентам, а это не кислая такая нагружка и надо это реализовать как - то так чтобы было все легко и не принужденно)))))
не думаю, что у вас речь идет о миллионах клиентов. на бирже, все, же, торгуют десятки тысяч. ну и биржа приносит обычно достаточно денег, чтоб хоть на 1000 машин кластер поднять...

Arch
01.02.2018
10:17:03
на RSA приемлемой скорости добиться не удастся. go - где-то 250 соединений в секунду на ядро, openssl - где-то 512
Я для себя решил делать по принципу пирамиды, между хедом и клиентами есть прослойка из клиентских серверов, которые держат коннект с клиентами и им впринципе ресаться не надо, а вот хед - пожалуйста

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
если не секрет как авторизовываете клиентов по WS ?
Я по ключу у меня с гетом уходит ключ, он же уникальный идентификатор пользователя, если ключ есть в базе, то даем коннект в противном случае закрываем соединение

DMITRY
01.02.2018
10:34:42
так там же все с get начинается. хочешь - basic, хочешь - на куках
basic же подразумевает что просто в Headers передаешь строку? просто особо не вижу отличий от авторизации по куке

Arch
01.02.2018
10:40:01
basic же подразумевает что просто в Headers передаешь строку? просто особо не вижу отличий от авторизации по куке
аха, ток в бэйзе передается логин/пасс в открытом виде, а в куке хранится только ключ, как правило

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
Так набрался пул таких соединений и все, нормальным клиентам нет места

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
гошный crypto/elliptic использовали или свое?
не использовали - не успели

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 записано

в проде в базе

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

Страница 1193 из 1674