避免在 Spring WebSocket 中使用 `/user` 前缀

避免在 Spring WebSocket 中使用 /user 前缀

如果你选择不使用 Spring Security,但仍然想发送特定用户的消息,可以使用以下方法避免 /user 前缀:

后端改动

  1. 更改消息发送方式

    convertAndSendToUser 方法更改为 convertAndSend 方法,并将用户ID添加到队列名称中。

    // 原先的代码
    // messagingTemplate.convertAndSendToUser(receiverId.toString(), "/queue/messages", ...);
    
    // 更改后的代码
    messagingTemplate.convertAndSend("/queue/messages/" + receiverId, ...);
    

前端改动

  1. 直接订阅特定用户的队列

    根据你的需要设置 userId,并订阅对应的队列。

    function connect() {
        const userId = 1; // 按需设置
        const socket = new SockJS('http://localhost:8080/ws-stomp');
        stompClient = Stomp.over(socket);
        stompClient.connect({}, function (frame) {
            console.log('Connected: ' + frame);
            stompClient.subscribe('/queue/messages/' + userId, function (messageOutput) {
                console.log('Received message:', messageOutput.body);
                showMessageOutput(JSON.parse(messageOutput.body).content);
            });
        });
    }
    

这些改动确保了每个用户都有他们自己的消息队列,并只在发送消息给他们时接收到消息。这避免了使用 /user 前缀,同时仍然保证了消息的正确路由。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值