Java Spring WebSocket-分离MessageMapping和SendTo

Java Spring WebSocket-分离MessageMapping和SendTo,java,spring,spring-boot,spring-websocket,Java,Spring,Spring Boot,Spring Websocket,我在spring 4的WebSocket上遇到了以下问题,不知道为什么会出现这种代码: @MessageMapping("/hello") @SendTo("/topic/greetings") public Greeting greeting(HelloMessage message) throws Exception { Thread.sleep(3000); return new Greeting("Hello, " + message.getName() + "!");

我在spring 4的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()

@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

非常感谢。今天,还有别的办法吗?
@Autowired
org.springframework.messaging.simp.SimpMessagingTemplate simpMessagingTemplate;