Size: a a a

2020 April 08

М

МишанЯ in Go-go!
Stepan Bezhuk
Понял) Тоисть это уже как удобно
Да. Соответственно и методы обращения будут)
источник

SB

Stepan Bezhuk in Go-go!
МишанЯ
Да. Соответственно и методы обращения будут)
Спасибо я думаю что если надо будет переделаю но пока что в таблице пользователя пусть будет)
источник

М

МишанЯ in Go-go!
Если ты только раз проверяешь онлайн и больше нигде этот онлайн не нужен, нахрен этот столбец в строке пользователя? Хотя это зависит как именно ты определяешь онлайн. Онлайн на сайте в статусе профиля?
источник

М

МишанЯ in Go-go!
Ой. Извини. Загнался я этим ВК и пользователями)
источник

SB

Stepan Bezhuk in Go-go!
МишанЯ
Ой. Извини. Загнался я этим ВК и пользователями)
))
источник

SB

Stepan Bezhuk in Go-go!
МишанЯ
Если ты только раз проверяешь онлайн и больше нигде этот онлайн не нужен, нахрен этот столбец в строке пользователя? Хотя это зависит как именно ты определяешь онлайн. Онлайн на сайте в статусе профиля?
Это апи должно быть для приложения под ios
источник

ВС

Владимир Столяров... in Go-go!
Чат делаете? А то сам тоже в это вляпался, могу подкинуть пару идей и граблей)
источник

М

МишанЯ in Go-go!
Stepan Bezhuk
Это апи должно быть для приложения под ios
тогда как удобно) Тебе общаться)
источник

SB

Stepan Bezhuk in Go-go!
Владимир Столяров
Чат делаете? А то сам тоже в это вляпался, могу подкинуть пару идей и граблей)
Немножка другая тематика) Стартап пытаемся запустить )
источник

SB

Stepan Bezhuk in Go-go!
МишанЯ
тогда как удобно) Тебе общаться)
) спасибо за советы )
источник

М

МишанЯ in Go-go!
Владимир Столяров
Чат делаете? А то сам тоже в это вляпался, могу подкинуть пару идей и граблей)
В slice держать?)))
источник

ВС

Владимир Столяров... in Go-go!
Вообще, нормальный способ, если есть веб сокеты, поднять вот это https://github.com/centrifugal/centrifugo/

А из своей практики, наиболее простое решение - периодически пинговать с клиента сервер и записывать для клиента время последнего пинга. И просто это время отдавать обратно на клиентов. Если отличие от текущего времени больше 5 минут - считаем за офлайн.
Минусы тоже есть - статус узнаётся не оперативно и на клиентах должно быть правильное время. Ну и ещё один не такой очевидный - криво оборвавшиеся коннекты будут впустую занимать ресурсы на сервере
источник

М

МишанЯ in Go-go!
Владимир Столяров
Вообще, нормальный способ, если есть веб сокеты, поднять вот это https://github.com/centrifugal/centrifugo/

А из своей практики, наиболее простое решение - периодически пинговать с клиента сервер и записывать для клиента время последнего пинга. И просто это время отдавать обратно на клиентов. Если отличие от текущего времени больше 5 минут - считаем за офлайн.
Минусы тоже есть - статус узнаётся не оперативно и на клиентах должно быть правильное время. Ну и ещё один не такой очевидный - криво оборвавшиеся коннекты будут впустую занимать ресурсы на сервере
А если tcp сервер. Должно же приходить о дисконекте от клиента. Если конект, то ставим ему в базу 1, дисконекте - меняем на нуль.
источник

ВС

Владимир Столяров... in Go-go!
Ха, нет!
О дисконнекте клиента можно узнать только, если он сам об этом скажет. Но это сообщение может и не дойти (ну например сеть пропала, в лифт вошли).
источник

М

МишанЯ in Go-go!
Владимир Столяров
Ха, нет!
О дисконнекте клиента можно узнать только, если он сам об этом скажет. Но это сообщение может и не дойти (ну например сеть пропала, в лифт вошли).
Если отправляется сообщение клиенту но возникает ошибка отправки, то можно посчитать клиента оффлайн и обработать ошибку как изменение статуса. Как вариант, если это чат.
источник

М

МишанЯ in Go-go!
Мммм, а вот по tcp от клиента есть же функция подключения к серверу и в случае окончания программы идёт обработка defer conn.Close(), можно ли к примеру это использовать как то? 🤔 Чтоб оповестить сервер...
источник

М

МишанЯ in Go-go!
Хотя если внезапно сеть пропадет, то и не отправит ничего...🤔
источник

p

pragus in Go-go!
x-foby
Тут другой вопрос: а почему произведение признаков считает какая-то отдельная функция?
Почему это не метод объекта?
https://play.golang.org/p/kLorXjKPU87
Потому что там несколько сложнее, т.к. это вообще про скидки на позицию в корзине и на саму корзину
источник

ВС

Владимир Столяров... in Go-go!
МишанЯ
Мммм, а вот по tcp от клиента есть же функция подключения к серверу и в случае окончания программы идёт обработка defer conn.Close(), можно ли к примеру это использовать как то? 🤔 Чтоб оповестить сервер...
Есть ещё другой способ - пинговать клиента с сервера. Тогда на сервере можно мгновенно узнать, что пользователь отвалился
источник

ЕО

Евгений Омельченко... in Go-go!
Владимир Столяров
Есть ещё другой способ - пинговать клиента с сервера. Тогда на сервере можно мгновенно узнать, что пользователь отвалился
а) не мгновенно
б) это ничем не лучше heartbeat'а
источник