WebScoket 订阅与广播模式

本文介绍了WebSocket的订阅与广播模式,包括maven依赖、SockJS配置、Spring Boot静态资源管理,以及Controller和Server端的设置。讲解了如何使用@SendTo和@SendToUser注解进行消息发送,其中@SendTo用于广播消息给所有订阅者,而@SendToUser则针对特定用户,支持广播选项。前端代码部分展示了如何根据配置进行连接和通信。
摘要由CSDN通过智能技术生成

1.maven依赖

<dependency>
  	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

2.configure配置

package com.myself.computerThinking.Subscription;

import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

@Component
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
   

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
   
        /**
         * 用户可以订阅来自“/topic,/user”为前缀的消息
         * 客户端只可以订阅这个前缀的主题
         */
        registry.enableSimpleBroker("/topic","/user");

        /**
         * 客户端发送过来的消息,需要以“/app”为前缀,再通过Broker转发给响应的Controller
         */
        registry.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
   

        /**
         * 路径:"websocket/socketServer.action"被注册为STOMP端点,对外暴露,客户端通过该路径接入webScoket服务
         */
       registry.addEndpoint("websocket/socketServer.action")
       .setAllowedOrigins("*")  //设置可以跨域请求
       .withSockJS();           // 添加SockJS支持    
    }
}

withSockJS() :添加SockJS的支持。(SockJS有关信息:https://blog.csdn.net/john_62/article/details/78208177)
SockJS是一个浏览器JavaScript库,它提供了一个类似于网络的对象。SockJS提供了一个连贯的、跨浏览器的Javascript API,它在浏览器和web服务器之间创建了一个低延迟、全双工、跨域通信通道。按浏览器是否支持WebSocket,以此使用三类传输对象:WebSocket > HTTP流 > HTTP长轮询

  • 如果添加了SockJS()支持,前段页面代码:var socket = new SockJS(url); url为http、https开头
  • 没有添加支持,var socket = new WebSocket(url); url为ws、wss开头

添加路径拦截器

	@Override
    
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值