最近公司有个大屏需要一个实时报警功能,这就用到webSocket技术,这个帖子就用来记录学习过程中的遇到的问题,如下是想要达到的效果图

 1.第一步肯定是先导入依赖

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

这里记录一个坑点,就是可能有的小伙伴会在启动的时候报错,这个是因为websockettomcat冲突,需要取消tomcat测试依赖,因为我用的是ruoyicloudplus 所以取消commonwebtest依赖项目就能顺利启动了~

2.编写config方法

这步都很简单,我是直接用的注解

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.CopyOnWriteArraySet;

/**
 * @author nxy
 */
@Component
@ServerEndpoint(value = "/websocket",subprotocols = {"protocol"})
@Slf4j
public class WebSocket {
    private Session session;

    private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<>();

    @OnOpen
    public void onOpen(Session session){
        this.session=session;
        webSocketSet.add(this);
        log.info("webSocket 消息有新推送连接总数{}",webSocketSet.size());

    }

    @OnClose
    public void onClose( ){
        webSocketSet.remove(this);
        log.info("webSocket 有连接断开连接总数{}",webSocketSet.size());

    }

    @OnMessage
    public void onMessage(String message ){
        log.info("收到客户端发来的消息{}",message);

    }

    /**
     * 广播发送消息
     * @param message 信息内容
     */
    public void sendMessage(String message){
        for(WebSocket webSocket:webSocketSet){
            log.info("广播消息{}",message);

            try {
                webSocket.session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * websocket 配置
 *
 * @author ruoyi
 */
@Configuration
public class WebSocketConfig
{
    @Bean
    public ServerEndpointExporter serverEndpointExporter()
    {
        return new ServerEndpointExporter();
    }
}

大概写完这些就可以愉快的应用websocket的 大概有的人可能会遇到我的问题,就是可以连接成功,但是会立刻断开,这个问题也困惑了我两天,终于在摸鱼中无意间发现问题。就是我的这个框架是有鉴权的,但是大屏是不会登录的,我当时只是在gateway白名单上加了头路径,还需要在SecurityConfiguration中把子模块路径配置进去!!!!!!下面是我网关配置截图

切记 一定要加!!!

做完这些就可以业务代码上直接应用

 我这就大概写个例子

 

 接下来我们测试一下,先添加信息

 

 

 成功收到,大功告成

原文地址:https://blog.csdn.net/xiao_nxy/article/details/128870800

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_12039.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注