Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 402
#1

Работа с Websocket - Android

10.11.2014, 11:13. Просмотров 681. Ответов 7
Метки нет (Все метки)

Кто сталкивался с вебсокетами, подскажите, пожалуйста.
Пишу чат, сообщения гоняются по вебсокету, управление сокетами происходит в сервисе.
Много ли ресурсов жрут открытые вебсокеты, стоит ли их закрывать вместе с закрытием приложения ?
Если закрывать сокеты, то нужно прикручивать механизм пушей со стороны сервера, чтоб приходило уведомление на телефон о новом сообщении.
Или лучше всегда держать сокеты открытыми, автоматически переоткрывать при обрыве?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2014, 11:13     Работа с Websocket
Посмотрите здесь:

Android POST запрос при открытом WebSocket'e
WebSocket Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrobyshevAlex
1166 / 1116 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
10.11.2014, 18:17     Работа с Websocket #2
А как Вы собираетесь сделать механизм пушей со стороны сервера, не подсоединившись с телефона к серверу?
Даже если бы на телефоне был статик ИП, и сервер бы знал все ип телефонов, то телефону нужно было бы держать открытый слушающий сокет...

От открытого сокета, вряд ли будет много энергии расходоваться, куда больше будет от подключения к интернету самого передатчика телефона
Следовательно сокетом больше, сокетом меньше - разница будет не большая, тут главное что бы не было постоянно работающего кода лишнего, который будет кушать процессор и расходовать энергию, а сокет открытый думаю не самое страшное...

Ну в крайнем случае делайте конект по таймеру, раз в несколько минут например, когда приложение свёрнуто.

Вообщем есть такой термин, как преждевременная оптимизация Я думаю стоит запустить бета версию приложения и походить с телефоном, посмотреть сколько батареи сожрёт ваше приложение, а не гадать как будет лучше, ибо на конект может потратиться больше энергии чем на поддержание просто открытого сокета некоторое время
Sony17
28 / 28 / 6
Регистрация: 24.05.2013
Сообщений: 157
10.11.2014, 22:56     Работа с Websocket #3
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Следовательно сокетом больше, сокетом меньше - разница будет не большая, тут главное что бы не было постоянно работающего кода лишнего, который будет кушать процессор и расходовать энергию, а сокет открытый думаю не самое страшное...
Это для девайса. А для сервера? Предположим, что ~тысяча девайсов одновременно держат сокет соединение с сервером. Представляете, какая нагрузка на сервер идет?
DrobyshevAlex
1166 / 1116 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
10.11.2014, 23:08     Работа с Websocket #4
Просто соединение держит? Поверьте, куда больше нагрузка, когда 1000 соединений пытаються подклчюитсья каждые 10 секунд что бы проверить данные

Если можно проврять раз в несколько минут, то я уже писал выше, можете проверять так.
Если нужно почти мгновенное оповещение - то реконнект будет больше грузить.

К тому же, запустив несколько экземпляров сервера на разных портах, например 4 сервера по 10к конектов, на 1 машине будет 40к клиентов висеть.

А если програмка на столько популярна, то я думаю она должна окупить 4к рублей в месяц за хороший выделенный сервер, и запустите тогда уже не на 1 машине, будите расширяться

Мне вот что интересно, Вы так уверены что у вас супер оптимизированный код, очень быстрые запросы, везде самые быстрые алгоритмы, на столько, что быстрей закончатся свободные порты на сервере, чем ресурсы процессора на выполнения бизнес логики приложения?
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 402
11.11.2014, 10:16  [ТС]     Работа с Websocket #5
А как Вы собираетесь сделать механизм пушей со стороны сервера, не подсоединившись с телефона к серверу?
Даже если бы на телефоне был статик ИП, и сервер бы знал все ип телефонов, то телефону нужно было бы держать открытый слушающий сокет...
Гугл предоставляет такой сервис, надо почитать разобраться... https://developer.android.com/google/gcm/index.html

Ну в крайнем случае делайте конект по таймеру, раз в несколько минут например, когда приложение свёрнуто.
Если сокет закрыт, то сообщение потеряется и не дойдет, так что раз в несколько минут не катит, у меня есть листенер на обрыв конекта с сокетом, в нём можно сразу пытаться переоткрыть. Но вот щас подумал, что логику работы сервера всё раво придётся менять, так как если нет интернета, сокет будет закрыт - сообщение потеряется.
DrobyshevAlex
1166 / 1116 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
11.11.2014, 11:54     Работа с Websocket #6
Цитата Сообщение от Gabberr Посмотреть сообщение
Гугл предоставляет такой сервис, надо почитать разобраться...
Что бы телефон получил что то, он должен быть соединён, так что вся разница будет только в том, что не ваше приложение а приложение гугла будет держать открытый сокет

Цитата Сообщение от Gabberr Посмотреть сообщение
Если сокет закрыт, то сообщение потеряется и не дойдет
А в icq, skype и прочих не теряется, если приложение было не в сети когда писали сообщение...
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 402
11.11.2014, 12:41  [ТС]     Работа с Websocket #7
Что бы телефон получил что то, он должен быть соединён, так что вся разница будет только в том, что не ваше приложение а приложение гугла будет держать открытый сокет
Пожалуй верно

А в icq, skype и прочих не теряется, если приложение было не в сети когда писали сообщение...
Надо запилить отчёты о доставке и на сервере логику добавить, чтоб отдавал не доставленные сообщения.
DrobyshevAlex
1166 / 1116 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
11.11.2014, 12:46     Работа с Websocket #8
Или сделать на веб сокетах и наслаждаться программкой
Yandex
Объявления
11.11.2014, 12:46     Работа с Websocket
Ответ Создать тему
Опции темы

Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru