Эта библиотека предоставляет поддержку протокола STOMP https://stomp.github.io/ На данный момент библиотека работает только как клиент для серверной части с поддержкой STOMP, такой как NodeJS (stompjs или другое) или Spring Boot (SockJS).
Добавьте библиотеку в качестве зависимости Gradle
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.github.NaikSoftware:StompProtocolAndroid:{последняя версия}'
}
WebSocketConfig.groovy
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic", "/queue", "/exchange");
// config.enableStompBrokerRelay("/topic", "/queue", "/exchange"); // Разкомментируйте для внешнего брокера сообщений (ActiveMQ, RabbitMQ)
config.setApplicationDestinationPrefixes("/topic", "/queue"); // префикс в запросах клиента
config.setUserDestinationPrefix("/user");
}
@Override
void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/example-endpoint").withSockJS()
}
}
SocketController.groovy
@Slf4j
@RestController
class SocketController {
@MessageMapping('/hello-msg-mapping')
@SendTo('/topic/greetings')
EchoModel echoMessageMapping(String message) {
log.debug("Ответ на hello-msg-mapping")
return new EchoModel(message.trim())
}
}
Просмотрите полный пример сервера https://github.com/NaikSoftware/stomp-protocol-example-server
private StompClient mStompClient;
// ...
mStompClient = Stomp.over(Stomp.ConnectionProvider.OKHTTP, "ws://10.0.2.2:8080/example-endpoint/websocket");
mStompClient.connect();
mStompClient.topic("/topic/greetings").subscribe(topicMessage -> {
Log.d(TAG, topicMessage.getPayload());
});
mStompClient.send("/topic/hello-msg-mapping", "Мое первое STOMP-сообщение!").subscribe();
// ...
mStompClient.disconnect();
См. полный пример https://github.com/NaikSoftware/StompProtocolAndroid/tree/master/example-client
Метод Stomp.over
принимает класс для создания соединения в качестве первого параметра.
Вы должны предоставить зависимость для библиотеки и передать класс.
На данный момент поддерживаются провайдеры соединений:
org.java_websocket.WebSocket.class
('org.java-websocket:Java-WebSocket:1.3.0')okhttp3.WebSocket.class
('com.squareup.okhttp3:okhttp:3.8.0')Вы можете добавить свой провайдер соединений. Просто реализуйте интерфейс ConnectionProvider
.
Если вы реализуете новый провайдер, пожалуйста, создайте pull request :)
Цикл жизни соединения
mStompClient.lifecycle().subscribe(lifecycleEvent -> {
switch (lifecycleEvent.getType()) {
case OPENED:
Log.d(TAG, "STOMP соединение открыто");
break;
case ERROR:
Log.e(TAG, "Ошибка", lifecycleEvent.getException());
break;
case CLOSED:
Log.d(TAG, "STOMP соединение закрыто");
break;
}
});
Библиотека поддерживает только отправку и получение сообщений. Подтверждение получения (ACK
) сообщений и транзакции пока не реализованы.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )