Подключение клиентов iOS и Android к серверной части SockJS.

Я разрабатываю серверную часть обмена сообщениями WebSocket, используя Spring WebSockets, который использует SockJS + STOMP протокол. Причина, по которой я не использую обычные веб-сокеты, заключается в том, что мне нужно будет использовать интеграцию безопасности, которую SockJS предоставляет в Spring WebSockets, а также другие удобные функции из SockJS, такие как комнаты, подписки и т. д. Мне было интересно, хороший ли это вариант для использования так что мобильные (iOS и Android) и веб-клиентские приложения могут легко подключаться к внутреннему серверу и выполнять обмен сообщениями. Если да, то какие библиотеки я могу использовать для iOS и Android.

На странице SockJS GitHub они также перечисляют доступные клиентские библиотеки, но не для iOS и Android. Итак, мне интересно, стоит ли использовать SockJS только из-за этого.

Я обнаружил, что для клиента iOS Primus-Objc (страница GitHub), утверждающая, что они могут подключаться к native WebSockets, Socket.IO, SockJS or perhaps engine.io. это верное утверждение? И если это правда, как насчет качества этой библиотеки?

И если можно использовать SockJS на задней панели, можно ли также показать пример кода для iOS и Android, чтобы я мог выполнить проверку концепции на мобильных устройствах?

Если SockJS не подходит для меня, то было бы лучше, чем создать мое приложение для обмена сообщениями с помощью Socket.io + Node.js (с использованием JavaScript). У Socket.io, как мне кажется, есть все необходимые клиентские библиотеки для iOS (официальная библиотека от Socket.IO ребята) и Android (официальная библиотека от ребят Socket.IO).

Другим вариантом может быть использование библиотеки Netty-Socket.io и создание каждой конечной точки вручную без какой-либо помощи со стороны Spring Framework (которую я собираюсь использовать), но есть небольшая проблема, которую мне придется решить, а именно безопасность. Кто-то уже пытался это сделать (тот же автор задает вопрос на официальной странице Netty-Socket.IO на Github), но, похоже, ему не повезло в решить это еще.


person Maksim    schedule 04.08.2015    source источник
comment
сослаться на этот блог elabs.se/blog /   -  person Durgesh Patel    schedule 07.08.2015
comment
также посмотрите github.com/elabs/mobile-websocket-example.   -  person Durgesh Patel    schedule 07.08.2015
comment
почему бы просто не использовать cometd? Он также поддерживает Android...   -  person We are Borg    schedule 07.08.2015
comment
Если вам нужен соответствующий код cometd, дайте мне знать. У меня есть реализация cometd для моего проекта.   -  person We are Borg    schedule 07.08.2015
comment
Можете ли вы найти ответ на эту проблему? Любой клиент Android, который отлично работает с серверной частью SockJS?   -  person Yasir Tahir    schedule 09.01.2017
comment
@YasirTahir Нет, ничего не нашел, перешел на SocketIO и пользуюсь им уже почти 1,5 года.   -  person Maksim    schedule 13.01.2017
comment
@Maksim 1. Используете ли вы сокет io с springboot и как вам удалось реализовать клиент Android, клиент ios общается с сервером spring. 2, чтобы настроить сокет io, вы создали сервер сокетов nodejs. 3. Вы реализовали java-клиент Springboot?   -  person Oto-obong Eshiett    schedule 22.11.2018


Ответы (4)


Может быть, прошло больше года с тех пор, как был задан вопрос. Но, потому что он попадает в первые результаты при поиске в Google для SockJS+Android. Итак, публикую свой ответ.

По моему опыту работы с недавним проектом, над которым я работал, мы смогли использовать клиент STOMP — как здесь- для подключения к серверной части Spring Websocket из собственного приложения для Android.

А из браузера вы по-прежнему можете использовать клиент SockJS, чтобы обеспечить совместимость браузеров с веб-сокетами с откатом.

Обратите внимание, что при использовании только клиента STOMP для подключения к собственному веб-сокету URL-адрес будет выглядеть примерно так: ws://mydomain/SockJSEndpoint/websocket, а при использовании клиента SockJS из браузера URL-адрес будет выглядеть как http://mydomain/SockJSEndpoint.

person Amr K. Ismail    schedule 19.01.2017
comment
Спасибо за то, что поделился этим ! - person Stefan Ciprian Hotoleanu; 25.03.2017
comment
Омг спасибо большое! Потратил несколько дней на выяснение правильной конечной точки веб-сокета в приложении Spring Boot. Не удалось найти информацию о добавлении /websocket ни в одной документации, когда я пытался реализовать свою собственную библиотеку WebSocket+STOMP в Android! - person wlays; 03.05.2019
comment
Допустим, вы не можете использовать эти библиотеки. Можно ли подключиться к ws://... и построить кадры STOMP и использовать только веб-сокет без какой-либо библиотеки - person Akbar; 10.06.2020

Ниже вы найдете полезные ссылки, связанные с вашими требованиями для iOS и Android.

  1. http://www.elabs.se/blog/66-using-websockets-in-native-ios-and-android-apps
  2. https://www.cometchat.com/blog/ios-android-chat-mobile-sdk/
  3. https://github.com/elabs/mobile-websocket-example
person Durgesh Patel    schedule 07.08.2015
comment
Есть ли примеры, когда SockJS и iOS общаются друг с другом, а пользователь аутентифицирован? - person Maksim; 13.08.2015
comment
Ссылка № 1 — это сообщение в блоге, связанное с исходным кодом по ссылке № 3. Они просто делают простой пример Hello World. В ссылке № 2 они предлагают использовать сторонний SDK. Нужно что-то конкретное и официальное, связанное с SockJS, мобильными устройствами и протоколом Stomp. - person Maksim; 13.08.2015

Мы протестировали их, оба Android-клиента (ссылка) были предоставлены @Amr K. Ismail и

этот iOS-клиент (ссылка) подходит для Spring-SockJS-Server с STOMP.

person Photon Point    schedule 08.02.2018

SockJS может быть интересен, потому что он предоставляет транспорты, отличные от ws. Простое использование WebSockets может оказаться невозможным во всех ситуациях.

Существует один кроссплатформенный клиент SockJs в проекте OpenFL:

https://github.com/jeremyfa/openfl-sockjs

Не проверялось, насколько хорошо это работает, но, по крайней мере, для Android он использует JavaScript из WebView, поэтому не должен отличаться от JavaScript. Опять же, неясно, насколько тесно он связан с OpenFL, но подход с использованием WebView и стандартного клиента SockJS, вероятно, можно было бы использовать повторно.

person Roman Susi    schedule 25.11.2015