2016-08-04 63 views
0

我堅持用彈簧4上的WebSockets以下問題,不知道爲什麼這樣的代碼:Spring和WebSocket的

@MessageMapping("/hello") 
@SendTo("/topic/greetings") 
public Greeting greeting(HelloMessage message) throws Exception { 
    Thread.sleep(3000); 
    return new Greeting("Hello, " + message.getName() + "!"); 
} 

工作正常,爲什麼這個劑量不:

@MessageMapping("/hello") 
public void hehe(HelloMessage message){ 
    try { 
     greeting(message); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
@SendTo("/topic/greetings") 
public Greeting greeting(HelloMessage message) throws Exception { 
    Thread.sleep(3000); 
    return new Greeting("Hello, " + message.getName() + "!"); 
} 

進出口尋找解決方案如果服務器端事件發生,如何調用greeting()方法,

感謝您的幫助。

回答

0

將它們分開將不起作用!

@MessageMapping("/hello") 
@SendTo("/topic/greetings") 
public Greeting greeting(HelloMessage message) throws Exception { 
    Thread.sleep(3000); 
    return new Greeting("Hello, " + message.getName() + "!"); 
} 

。如果您要發送到目的地的服務器端事件,你應該使用:

simpMessagingTemplate.convertAndSend("/user/" + username + "/topic/greetings", 
     new Greeting("Hello, " + message.getName() + "!")); 
// username should refer to the user in socket header if you want to send to a specific user 
// omit the prefix /user/<username> if you are broadcasting 

其中SIMP使用(你可以使用通訊uitlities像rabbitMQ太):

@Autowired 
org.springframework.messaging.simp.SimpMessagingTemplate simpMessagingTemplate; 
相關問題