Spring WebSocket 关于 @MessageMapping 和 @SendTo 是否可以单独使用问题

2019-10-04 17:57:25 +08:00
 stephCurry

前端通过 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";
    }
}

其实我想把接受和推送单独分离开, 但是不好使。。。

6275 次点击
所在节点    Java
2 条回复
stephCurry
2019-10-04 22:16:14 +08:00
做了些尝试,@SendTo 不可单独使用, 而 @MessageMapping 可以。
如单独仅推送, 可用 SimpMessagingTemplate#convertAndSend
xlui
2019-10-04 23:25:19 +08:00
SendTo 本来就是 convertAndSend 的另一种用法吧,从功能上理解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/606318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX