I know this question may have been asked before but I have created a websocket api using spring boot and works fine in javascript SockJs however I need the api to work on android application and I cant find any java websocket client that work in a similar way like javascript JS. Here is is my javascript code which works fine on my stomp webclient api. I need on connection app to subscribe like below javascript code
<script type="text/javascript">
var stompClient = null;
function myfunction()
{
stompClient = Stomp.client('ws://mydomain.com:8443/MyContex/ws');
stompClient.connect({}, onConnected, onError);
}
const onConnected = () => {
console.log("connected");
stompClient.subscribe(
"/user/1/queue/messages",// I need java code to do this
onMessageReceived
);
};
const onError = (err) => {
console.log(err);
};
</script>
I have followed this and never found code that does the commented part in javascript.
Here is My Spring boot Stomp API.
public class ChatController
{
@Autowired
private SimpMessagingTemplate messagingTemplate;
@Autowired
private MessageModelService messageModelService;
@Autowired
private ChatRoomService chatRoomService;
@MessageMapping("/chat")
public void processMessage(@Payload MessageModel messageModel) {
Optional<String> chatId = chatRoomService
.getChatId(messageModel.getSenderId(), messageModel.getRecipientId(), true);
messageModel.setChatId(chatId.get());
MessageModel saved = messageModelService.save(messageModel);
messagingTemplate.convertAndSendToUser(
messageModel.getRecipientId(),"/queue/messages",
new ChatNotification(
saved.getId().toString(),
saved.getSenderId(),
saved.getSenderName()));
}
}
@Data
private class MessageModel{
private String recepientId;
private String senderId;
private String message;
}
@Configuration
@EnableWebSocketMessageBroker
public class WebMessageConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker( "/user");
config.setApplicationDestinationPrefixes("/app");
config.setUserDestinationPrefix("/user");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry
.addEndpoint("/ws")
.withSockJS()
.setAllowedOrigins("*");
}
}