Reputation: 21
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