Spring websockets - 分离 MessageMapping 和 SendTo
Spring websockets - Separating MessageMapping and SendTo
我在 spring 4 的 websockets 上遇到了以下问题,不确定为什么会出现此代码:
@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
使用 SIMP 的地方(您也可以使用 rabbitMQ
等消息传递实用程序):
@Autowired
org.springframework.messaging.simp.SimpMessagingTemplate simpMessagingTemplate;
我在 spring 4 的 websockets 上遇到了以下问题,不确定为什么会出现此代码:
@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
使用 SIMP 的地方(您也可以使用 rabbitMQ
等消息传递实用程序):
@Autowired
org.springframework.messaging.simp.SimpMessagingTemplate simpMessagingTemplate;