前端通过 sockJs 和 stomp client 和 Spring WebSocket 建立链接。。
按照 spring io 的 demo 是 ok 的,但是其方式是将@MessageMapping
和 @SendTo
这两个注解同时绑定在 Controller 的方法上;
个人理解为 @MessageMapping
是前端的 endpoint,作为后端的接受, 而@SendTo
作为后端向前端订阅者推送。
由于实际需求, 其实只需要后端向前端推送通知即可。尝试代码如下:
@Controller
public class MessageEndPoint {
@MessageMapping("/chat")
public void receive(String message) throws Exception {
$save(message);
}
@SendTo("/topic/notify")
public String send(String msg) {
return "time to refresh";
}
}
其实我想把接受和推送单独分离开, 但是不好使。。。
1
stephCurry OP 做了些尝试,@SendTo 不可单独使用, 而 @MessageMapping 可以。
如单独仅推送, 可用 SimpMessagingTemplate#convertAndSend |
2
xlui 2019-10-04 23:25:19 +08:00 via Android
SendTo 本来就是 convertAndSend 的另一种用法吧,从功能上理解。
|