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

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

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

Работа с Websocket - Android

10.11.2014, 11:13. Просмотров 659. Ответов 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
 Аватар для Gabberr
101 / 101 / 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
 Аватар для Gabberr
101 / 101 / 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
Ответ Создать тему
Опции темы

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