Невозможно получать сообщения из веб-сокета весной mvc - PullRequest
0 голосов
/ 13 ноября 2018

Я могу подключаться и отправлять сообщения в веб-сокет в моем весеннем веб-приложении 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);
    }

}

Я не использую здесь никакой аутентификации. Кто-нибудь знает, почему я не получаю сообщения на моей стороне клиента

...