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 条评论
登录 后参与评论

相关文章

来自专栏互联网技术杂谈

flask源码阅读笔记(2)-session相关

基于代码可看出,flask的session是基于cookie实现的,这样可以实现不同请求间存储特定用户的信息,实现用户状态的保持。

1946
来自专栏编程坑太多

『高级篇』docker之微服务docker下的服务通讯(19)

1163
来自专栏L宝宝聊IT

Squid代理服务器应用示例

5103
来自专栏月牙寂

k8s源码分析-----kube-proxy(2)ProxyServer

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

3764
来自专栏Python

解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法

我是在在本地用虚拟机中通过yum安装nginx的,安装一切正常,但是访问时报403,

2261
来自专栏deepcc

form表单无刷新提交文件(iframe)

40110
来自专栏刺客博客

Centos下新增用户及提权方法

1K2
来自专栏GreenLeaves

Oracle 单实例数据库安装和real application clusters数据库安装的区别

 在想了解Oracle单实例数据可和RAC数据库前,请确保你已经知道了数据库和实例的关系,如果不了解,请参考Oracle 数据库实例和数据库。 单实例数据库模式...

2408
来自专栏云原生架构实践

部署模式 - 每个主机多个服务实例

已经通过微服务架构的分解模式(参考按业务领域分解模式划分微服务),将整个应用程序划分为多个独立的微服务。

2236
来自专栏遊俠扎彪

CentOS架设LAMP

yum install httpd httpd-devel

2336

扫码关注云+社区

领取腾讯云代金券