xMaster
xMaster

Reputation: 21

Websocket Spring Stomp connect to Android App

I have created a backend with WebSocket functionality that works with my JavaScript application. Now, I also want to establish a connection with my Android Kotlin App

WebSocket Spring Config

`@Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/ws")
            .setAllowedOrigins("*")
            .withSockJS();
}

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    System.out.println("Configuring message broker...");
    registry.enableSimpleBroker("/topic");
    registry.setApplicationDestinationPrefixes("/app");

}

@Override
public boolean configureMessageConverters(List<MessageConverter> messageConverters) {
    DefaultContentTypeResolver resolver = new DefaultContentTypeResolver();
    resolver.setDefaultMimeType(APPLICATION_JSON);
    MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
    converter.setObjectMapper(new ObjectMapper());
    converter.setContentTypeResolver(resolver);
    messageConverters.add(converter);

    return false;
}

}`

Is possible to do it? I all the time have error 400 in Android App

Error: Expected HTTP 101 response but was '400 ' java.net.ProtocolException: Expected HTTP 101 response but was '400 ' at okhttp3.internal.ws.RealWebSocket.checkUpgradeSuccess$okhttp(RealWebSocket.kt:224) at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:170) at okhttp3.internal.connection.RealCall$AsyncCall.runyour text

I don't know it's even possible to do this in this way. In .js app I connect with stomp protocol like this

function connect() {
     var socket = new SockJS('/ws');
     stompClient = Stomp.over(socket);
     stompClient.connect({}, function (frame) {
         setConnected(true);
         console.log('Connected: ' + frame);

         const chatId = new URLSearchParams(window.location.search).get('chatId');
         const userId = new URLSearchParams(window.location.search).get('userId');

         stompClient.subscribe('/topic/messages/' + chatId, function (greeting) {
                  showGreeting(JSON.parse(greeting.body));
         });

         stompClient.subscribe('/topic/notify/' + userId, function (notification) {
                showNotification(JSON.parse(notification.body));
         });
     });
 }

Upvotes: 0

Views: 82

Answers (0)

Related Questions