2015-11-29 5 views
0

Я пытаюсь отправить и обработать сообщение из браузера через STOPM, используя Spring-messaging. Но сообщение не отправлено.Не удается отправить сообщения через stomp с помощью Spring messaging

Некоторый код Сейчас:

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketStompConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer{ 

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/marcopolo").withSockJS(); 
    } 

    @Override 
    public void configureMessageBroker(MessageBrokerRegistry registry) { 
     registry.enableSimpleBroker("/queue", "/topic"); 
     registry.setApplicationDestinationPrefixes("/app"); 
    } 
} 

Как вы можете видеть, я использую встроенные пружины просто брокера.

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <meta charset="UTF-8"/> 
    <title>Title</title> 
    <script th:src="@{/webjars/sockjs-client/1.0.2/sockjs.min.js}"/> 
    <script th:src="@{/webjars/stomp-websocket/2.3.3/stomp.min.js}"/> 
    <script> 
     function doSmth(){ 
      var sock = new SockJS('/spittr/marcopolo'); 

      var stomp = Stomp.over(sock); 

      var payload = JSON.stringify({'message': 'Marco !'}); 

      stomp.connect('guest', 'guest', function(frame) { 
       stomp.send('/app/marcopolo', {}, payload); 
      }); 
      var dupa = 'dupa'; 
     } 
    </script> 
</head> 
<body> 
    <button onclick="doSmth();">Connect</button> 
</body> 
</html> 

Когда я пытаюсь отладки сценариев в рамках Firefox отладки никогда не достигают часть:

stomp.send('/app/marcopolo', {}, payload); 

может быть, топтать не может подключиться?

Топы и носки создаются должным образом.

@Controller 
public class MarcoController { 

    @RequestMapping(value = "/marcop", method = RequestMethod.GET) 
    public String getMarcoPolo(){ 
     return "sockjstest"; 
    } 

    @MessageMapping(value = "/marcopolo") 
    public void handleShout(Shout incoming){ 
     System.out.println(incoming.getMessage()); 
    } 
} 

Когда я вызвать функцию doSmth() и попытаться останов handleShout (Shout входящей) функции я не могу поймать эту точку останова. Функция никогда не вызывается.

Вы видите, что я делаю неправильно?

ответ

0

ehh решение этой проблемы очень просто :) Просто использовал неправильный класс для расширения моего WebSocketStompConfig. Используется: AbstractSecurityWebSocketMessageBrokerConfigurer Должно быть: AbstractWebSocketMessageBrokerConfigurer

Смежные вопросы