webSocket 发送消息给客户端

  1. 在配置websocket代理时使用simpleBroker(简单代理),就不需要使用消息服务器,简单向前端发送消息:
 @Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.enableSimpleBroker("/client");
}
  1. @SendTo 注解可以将消息发送给所有订阅此地址的客户端;如果不需要将消息发给所有的用户,则可以使用@SendToUser,(如果一个用户在多个浏览器登陆,则会将消息发给所有客户端,如果不需要发送给所有的,可以设置broadcast=false)
    @MessageMapping("/send")
    @SendToUser(destinations = "/client", broadcast = false)
    public String ws(Principal principal, String msg) {

        // 客户端订阅的地址是 /user/client
        // 服务端@SendToUser发送的代理地址是 /client, 地址将会被转化为 /user/{username}/client
        System.out.println(principal);
        System.out.println(msg);

        return msg;
    }
  1. 如果服务端要将消息发送给特定的某一个用户,可以使用SimpleMessageTemplate的convertAndSendToUser方法(第一个参数是用户的登陆名username)
     @MessageMapping("/send")
//    @SendToUser(destinations = "/client", broadcast = false)
    public void ws(Principal principal, String msg) {

        // 客户端订阅的地址是 /user/client
        // 服务端@SendToUser发送的代理地址是 /client, 地址将会被转化为 /user/{username}/client
        System.out.println(principal);
        System.out.println(msg);

        simpMessagingTemplate.convertAndSendToUser("yawn1", "/client", msg);
    }
  1. 客户端订阅代码
var socket = new SockJS("/socket");
var stomp = Stomp.over(socket);
stomp.connect("guest", "guest", function(frame){
    stomp.subscribe("/user/client", function (message) {
        $(".content").html(message.body);
    })
});
  1. 客户端发送代码(客户端发送的地址可以是服务端@MessageMappring设置的地址,也可以是配置的代理地址,后者可以直接将消息发送给订阅者)
$(".send").click(function () {
    stomp.send("/server/send", {}, $(".msg").val());
});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏孔德雨的专栏

MongoDB 复制集原理

MongoDB通过一张特殊的表 local.oplog.rs 存储 oplog,该表的特点是固定大小,满了会删除最旧记录插入新记录,而且只支持append操作,...

7.9K0
来自专栏小白安全

小白Java从入门到放弃

1,http是什么(超文本传输协议)? hypertext transfer protocol由w3c制订的一种网络应用层协议,它规定了浏览器与web...

3786
来自专栏zaking's

RFC2616-HTTP1.1-Methods(方法规定部分—译文)

part of Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 Fielding, et al.

612
来自专栏Java技术栈

让面试官颤抖的 HTTP 2.0 协议面试题

Http协议,对于拥有丰富开发经验的程序员来说简直是信手拈来,家常便饭。虽然天天见,但是对于http协议的问题,可能很多人在没有积极准备的情况下,不一定能很好的...

1032
来自专栏jeremy的技术点滴

重新理解HTTP中的“持久连接”

3084
来自专栏前端学习心得

关于Http协议,你必须要知道的

1484
来自专栏同步博客

HTTP协议详解以及URL具体访问过程

  即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准...

1333
来自专栏Java技术

让面试官颤抖,HTTP2.0协议之你应该要准备的面试题

Http协议,对于拥有丰富开发经验的程序员来说简直是信手拈来,家常便饭。虽然天天见,但是对于http协议的问题,可能很多人在没有积极准备的情况下,不一定能很好的...

643
来自专栏java思维导图

【读书笔记】1.2、基于HTTP协议的RPC

1.2.1HTTP协议栈 HTTP协议 Hypertext Transfer Protocol的缩写(超文本传输协议) 属于应用层协议,构建在TCP与IP协议之...

2925
来自专栏顶级程序员

几张趣图助你理解HTTP状态码~

HTTP状态码(图一): ? 注释: 301—永久移动。被请求的资源已被永久移动位置; 302—请求的资源现在临时从不同的 URI 响应请求; 305—使...

3828

扫描关注云+社区