Я могу подключаться и отправлять сообщения в веб-сокет в моем весеннем веб-приложении MVC, но отправленные сообщения не принимаются на стороне клиента (Android).Я использую NaikSoftware / StompProtocolAndroid для отправки и получения сообщений.Я пытаюсь отправить его обратно мне.Я проверил свою базу данных и увидел отправленные сообщения, но я не могу его получить.Вот мой код Android для получения / подписки
mStompClient.topic("/app/user/queue/")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(topicMessage -> {
M.log( "Received " + topicMessage.getPayload());
});
Это функция отправки сообщения на стороне клиента
public void sendMessage(String message, String user) {
ChatMessage chatMessage = new ChatMessage();
chatMessage.createdOn = LocalDateTime.now().toString();
chatMessage.from ="TFM1001";
chatMessage.to = user;
chatMessage.message = message;
mStompClient.send("/chat/room/+user, mGson.toJson(chatMessage))
.compose(applySchedulers())
.subscribe(() -> {
M.log( "STOMP echo send successfully");
}, throwable -> {
M.log("Error send STOMP echo", throwable.getMessage());
});
}
Вот конфигурация WebSocket
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/queue/");
config.setApplicationDestinationPrefixes("/chat");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").withSockJS();
}
и вот мой контроллер чата
@Controller
public class ChatController {
@Autowired
private ChatRepository chatRepository;
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
@MessageMapping("/room/{user}")
public void sendMessageToUser(@Payload ChatMesage message, @DestinationVariable("user") String username) {
simpMessagingTemplate.convertAndSend("/app/user/queue/"+username, message);
chatRepository.addChat(message);
}
}
Я не использую здесь никакой аутентификации. Кто-нибудь знает, почему я не получаю сообщения на моей стороне клиента