2016-03-02 120 views
0

我使用的WebSocket春天4.2.4 sockjs和踢踏从异步方法发送消息,我试图从服务器发送消息给所有用户在异步任务,没有运气春天的WebSocket

我的课是:

public class MyClass{ 
    private timer; 
    public MyClass(){ 
     this.timer = new Timer(); 
    } 

    @Async 
    public void myMethod(){ 
     timer.schedule(new MyReminder(), 1000); 
    } 

    @Async 
    private class MyReminder extends TimerTask{ 

     @Autowired 
     SimpMessagingTemplate messageingTemplate; 

     @Override 
     public void run(){ 
      messageingTemplate.convertAndSend("/app/subscribers","message"); 
     } 
    } 
} 

但用户不得到的消息

任何帮助吗?我做了什么错:(

*编辑*

我的信息经纪人:

public void configureMessageBroker(MessageBrokerRegistry config){ 
    config.enableSimpleBroker("/topic","/myApp"); 
    config.setApplicationDestinationPrefixes("/myApp"); 
} 

,当我订阅:

subscribe("myApp/someRoute") 

谢谢!

**编辑2:**

感谢您的帮助我解决了这个问题:)

回答

0

您可以做到这一点,但在经纪人的目的地。

请分享,您的AbstractWebSocketMessageBrokerConfigurer

通常我们这样做:

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

所有这些/app/目的地不会被经纪人处理。您只能在@SubscribeMapping - 客户计划的请求 - 回复场景中订阅它们。

您的任务完全符合STOMP方面的发布 - 订阅故事 - topic

因此,您的订阅者(客户端)应该订阅经纪人的一些主题,然后您可以简单地向其发送消息。

+0

public void configureMessageBroker(MessageBrokerRegistry config){config.enableSimpleBroker(“/ topic”,“/ myApp”); config.setApplicationDestinationPrefixes( “/对myApp”);} ;;;;;;;;;当我订阅:订阅(“myApp/someRoute”) –

+0

请将这样的评论作为编辑移动到您的问题。跟踪评论中的代码非常困难。 –