1

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("*");

    }
    
    }
Nemuga Dev
  • 334
  • 4
  • 10
  • Please try this: https://medium.com/@jamesbrown5292/what-i-learned-about-websockets-by-building-a-real-time-chat-application-using-socket-io-3d9e163e504 – Hafiza Mar 28 '21 at 08:23

0 Answers0