2016-08-04 17 views
0

ich folgendes Problem auf WebSockets im Frühjahr steckte 4, nicht sicher, warum dieser Code:Frühling und websocket

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

funktioniert gut, und warum diese Dosis nicht:

@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() + "!"); 
} 

Im Suche nach Lösung wie man die gruß() methode aufruft, wenn ein ereignis auf der serverseite auftritt,

danke für die hilfe.

Antwort

0

Das Trennen wird nicht funktionieren !!

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

Auf einem Server Side-Event, wenn Sie zu einem Ziel senden möchten, sollten Sie verwenden:

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 

wo SIMP verwendet wird (Sie Messaging uitlities wie rabbitMQ verwenden):

@Autowired 
org.springframework.messaging.simp.SimpMessagingTemplate simpMessagingTemplate;