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

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

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

Работа с Websocket - Программирование Android

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

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

WebSocket - Программирование Android
Есть переписка между 2 пользователями, общий чат, где много пользователей и комментарии к фото. Посоветуйте, использовать 1 websocket для...

POST запрос при открытом WebSocket'e - Программирование Android
Можно ли делать POST запрос к серверу в то время, когда открыт WebSocket?

Работа с WebSocket-ом - C# WCF
Не организовывал ли кто-нибудь обмен данными через WebSocket? Сложность и непонятность заключается в том, что при тестировании моей...

Websocket - Delphi
Здравствуйте. Пытаюсь автоматизировать некий процесс в сети. При ручном исполнении браузер отправляет get запрос по протоколу HTTP: ...

Websocket - jQuery
<script type="text/javascript"> var onWindowLoad = function() { $("#status").fadeOut(); $("#preloader").fadeOut("slow"); ...

WebSocket - C++
Есть сервер до которого можно достучаться по определенному ip:port написанный на С++. Есть вебклиент, который использует webSocket. Как...

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

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

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

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

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

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

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

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

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

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

А в icq, skype и прочих не теряется, если приложение было не в сети когда писали сообщение...
Надо запилить отчёты о доставке и на сервере логику добавить, чтоб отдавал не доставленные сообщения.
0
DrobyshevAlex
1169 / 1119 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
11.11.2014, 12:46 #8
Или сделать на веб сокетах и наслаждаться программкой
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2014, 12:46
Привет! Вот еще темы с ответами:

WebSocket - Node.js
Как использовать websocket на Node.js? Если писать так var WebSocketServer = require('websocket').server; то будет ошибка ...

Реализация WebSocket - Язык D
На Java есть вот такая, библиотечка Есть ли, что-то подобное для ?

WebSocket Ssl - C++ Qt
Всем привет. В общем задача такова, появилась задача реализовать клиента для общения с отдаленным сервером через web сокеты. С самой...

PHP и webSocket - PHP Сети
Добрый день! Возникла необходимость подключится к вебсокету (на Nodejs) через пхп. Суть проблемы не большая - php подключается,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.11.2014, 12:46
Ответ Создать тему
Опции темы

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