LINUX.ORG.RU

Какие сейчас есть библиотеки для передачи сообщений с мобилы на комп?

 ,


0

1

Хочу написать приложуху для личного использования. В ней нужен функционал управления с андроида компом с линуксом удалённо, по интернету. Есть что-то, кроме telegram API, что успешно подойдёт для этого? С учётом того, что у компа динамический IP.

Пока только 2 варианта вижу: telegram API и http сервер с запросами по REST API. Про первый только слышал, второй - под вопросом, так как во-первых, не нужный оверхед, во-вторых, он требует статического ip. Третий вариант - сокеты, но тут тоже нужен статический ip.

Есть в 2022 какие-то ещё варианты?

★★★★★

Последнее исправление: next_time (всего исправлений: 1)

Гугли про миддлвари для распределенных систем, но рест тебе скорее всего хватит за глаза, да и прибить свой динамический IP на бесплатный ddns или noip никакой проблемы :) Опять же... вместо велосипедов рассмотри ssh, vnc, noVnc или что-то еще :) По ssh можно отлично получать доступ к локальным вебмордам и аналогично к самопальным рест-сервисам :)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 3)

В ней нужен функционал управления с андроида компом с линуксом удалённо, по интернету

Чем удалённый рабочий стол не угодил ? ssh ?

для ssh - termux на андроид ставишь и присоединяешься в консольке.
AKonia ★★
()

Дешевый сервак с очередью сообщений, если не нужнен реалтайм.

Можно взять в облаке готовый сервис (AWS и аналоги). Для одного компа есть хороший шанс уложиться в бесплатные квоты. Для этих сервисов есть уже готовые API/библиотеки.

Можно взять целый сервак и поддерживать его самостоятелно. Но нужно хорошо понимать зачем это делать. Дешевле это точно не будет (только если ваше личное время стоит $0/час).

P.S. Для Android лучше сразу смотреть на Java. Иначе кучу времени потратите на «склеивание» C++ и Java кода. Для десктопа - не принципиально, но может быть удобнее писать все на одном языке.

trex6 ★★★★★
()

Если мсье измучен жысоном и хмлом — хочется бинарного угара для расширения кругозора — ну начни с

разных там RPC:

https://en.wikipedia.org/wiki/Remote_procedure_call

https://en.wikipedia.org/wiki/Message-oriented_middleware

https://en.wikipedia.org/wiki/Protocol_Buffers и https://ru.wikipedia.org/wiki/GRPC

А там тыкай во все ссылки в подвалах статьей, пока до Гитлера не дойдешь :)

Или зайди от MQ:

https://en.wikipedia.org/wiki/Message_queue

slackwarrior ★★★★★
()
Ответ на: комментарий от trex6

Для Android лучше сразу смотреть на Java. Иначе кучу времени потратите на «склеивание» C++ и Java кода.

C NDK там ничего особо склеивать не надо :) Его нужно просто один раз научиться готовить.

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

Я этим много лет профессионально занимался. Подводных камней там хватает. Большинство бибилиотек для Android тоже на джава (котлин), клеить их к C++ - то еще удовольствие.

Плюс я не вижу особенных преимуществ от исользования С++ для такой задачи. А выучить Java на достаточном для такой задчки уровне должно быть легко, имея за плечами С++ бекграунд.

Хотя может быть Qt уже готов для нормальной работы на андроиде. Я очень давно его не трогал.

trex6 ★★★★★
()
Ответ на: комментарий от slackwarrior

Для управления домашним компом с линуксом есть уже достаточно как бесплатных, так и платных решений. Смысла что-то писать, тем более на С++, нет совсем.

Ну а если развлекаться, что почему бы и сервак не взять? Заодно полезные профессиональные знания/умения/навыки можно получить.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

Для развлекаться — сервак это оверкил. Для обучения — какая разница какой язык, если используется REST? Get и Post послать и респонс разобрать не рокет саенс. Серваки и т.д. «чтоб ынтерпрайзно» — это все тот еще «оверинжиниринг» для «просто потыкать». Когда поймет что ему нужно, особенно по нагрузке (одному юзеру сложно соверменный комп нагрузить «инпутом» через клаву/мышь, он чаще всего «очень интенсивно» отдыхает) — уже можно думать о серваках.

slackwarrior ★★★★★
()
Ответ на: комментарий от trex6

Много это скока? :) NDK 12 лет, не больше, в 15-м году с рестом из него не было никаких граблей, т.к. пионеры-герои прошли этим курсом еще в 2010-м. Более того, люди уже тогда велосипедили обертки для .Net (который щас Xamarin) и даже для Ada https://docs.adacore.com/gnat-ajis-docs/html/Using_JNI_Directly.html.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)

Варианта на самом деле три, но ты не их описал а только частные случаи двух.

Первый (на мой взгляд самый хороший, но ты его не упомянул) - сделать компу статический белый адрес и слать напрямую.

Второй - арендовать где-то сервер с белым адресом для проксирования с него сообщений на комп. Всякие «REST API» и прочие умные слова тут не суть, и сервер совсем не обязан быть http.

Третий (самый плохой) - делать то же самое но не на своём сервере а на чужом, например уже упомянутый тобой телеграм, но вообще опять же сойдёт абсолютно любой сервис, позволяющий отправлять/принимать сообщения в неинтерактивном режиме.

firkax ★★★★★
()

эээ…решить проблему динамического IP не проще-ли ?

найти прокси или dynamic dns настроить

иначе про Middleware ужа сказали. Найти облачную xxxDB на вкус с бесплатным тарифом (у тебя объектов/потоков всего ничего). С Android пиши, на компе читай. Благо что многие поддерживают очереди, там вообще всё просто.

MKuznetsov ★★★★★
()
Ответ на: комментарий от slackwarrior

Сборка и заливка apk без использования eclipse

Ох, ё! Eще Эклипс и ant были в ходу.

Но тогда я для себя развлекался, всякие обертки для NKD-only сборки писал, чтобы «вообще ни строчки на Ява». С 2013 уже профессионально этим занимался.

P.S. Проблемы там не с REST’ом, а с lifecycle и остальным.

P.P.S. А для С++ уже есть что-то готовое уровня OkHttp/Retrofit?

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Get и Post послать и респонс разобрать не рокет саенс. Один запрос - вообще не рокет сайнс. А вот чтобы стабильно работало в разных corner cases - уже веселее.

Насколько стабильны всякие ddns или noip - я не знаю. Может и норм решения, но я бы посоветовал посмотреть в другую сторону.

trex6 ★★★★★
()

Хочу написать приложуху для личного использования. В ней нужен функционал управления с андроида компом с линуксом удалённо, по интернету.

c++

2022

откуда вы такие берётесь?

anonymous
()

Хочу написать приложуху для личного использования. В ней нужен функционал управления с андроида компом с линуксом удалённо, по интернету. Есть что-то, кроме telegram API, что успешно подойдёт для этого? С учётом того, что у компа динамический IP.

А зачем тут вообще Telegram? Можешь через email зашифрованные команды слать. Или через XMPP. Или через Matrix. Собственно, через Matrix, XMPP или еще какой-нибудь мессенждер можно тупо сообщить свой текущий IP, а дальше уже через него работать через сокеты.

SZT ★★★★★
()
Ответ на: комментарий от trex6

Проблемы там не с REST’ом, а с lifecycle и остальным.

Или не проблема. Или не у всех.

slackwarrior ★★★★★
()
Ответ на: комментарий от trex6

Насколько стабильны всякие ddns или noip - я не знаю. Может и норм решения, но я бы посоветовал посмотреть в другую сторону.

Для домашнего компа хватит за глаза и за уши. Особенно с учетом трафика от одного юзера.

slackwarrior ★★★★★
()
Ответ на: комментарий от trex6

А для С++ уже есть что-то готовое уровня OkHttp/Retrofit?

libcurl «недостаточно професcионален» чтоб пионеры с NIH синдромом постоянно «переизобретали» HTTP запросы? просто на то время его нужно было уметь готовить — но не больше чем какую-нибудь там SDL или AngelScript :) А если уж REST надо затачивать кому-то под «профессиональное» использование — это ж не вебсервисы, хотя и там никакой проблемы было автоматически сгенерить клиент по UDDI или WSDL (еще глазами посмотреть что генерится и вырезать все лишнее :))

slackwarrior ★★★★★
()

Из не перечисленного:

  1. AMQP (например, RabbitMQ) как шина передачи данных (нужен сервак в интернете под брокера).

  2. (g)RPC/REST поверх VPN (нужен сервак для VPN в интернере).

ИМХО если у тебя там 1.5 сообщения в час, то бери telegram и не парься пока. Отладишь рабочее решение за пару дней, а дальше посмотришь хватает его или нет тебе.

Norgat ★★★★★
()

Раз уж ты упомянул телегу, то это можно сделать с помощью Telegram Bot API.

Да и делается это по времени очень быстро.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

libcurl «недостаточно професcионален»?

Нет, я не про libcurl, я про что-то с готовой сериализацией из коробки и прочими ништяками.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от SZT

Можешь через email зашифрованные команды слать.

на отзывчивость будет влиять неиллюзорно + оверхед по всем фронтам совершенно ненужный //хотя, опять же, по email можно посылать ip

Или через XMPP. Или через Matrix. Собственно, через Matrix, XMPP или еще какой-нибудь мессенждер можно тупо сообщить свой текущий IP, а дальше уже через него работать через сокеты.

как вариант - да. есть какая-нибудь готовая библиотека для простой посылки сообщений через них?

next_time ★★★★★
() автор топика

А в чём проблема сделать компу статический IP? Когда мне провайдер не хотел давать статику, я просто цеплялся к vpn сети и всё. Это кстати удобно, у компа постоянный IP-шник даже если его физическое местоположение меняется. Сообщение будет стопудово доставлено. И если не хочется использовать сторонние сервера, всё равно же придётся поднимать VPS-ку и пихать туда какой-нибудь rabbitmq и api на сторону сервера, и демон который по таймингам будет чекать сообщения на стороне клиента, тогда пофиг какой IP будет у компа. Я для своего барахла брал вот эту штуку: https://github.com/alanxz/SimpleAmqpClient . По сути это обёртка над сишной либой, но не пофиг ли? Работало отлично.

u0000
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.