千家信息网

SpringBoot WebSocket怎么实时监控异常的详细流程

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本篇内容主要讲解"SpringBoot WebSocket怎么实时监控异常的详细流程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot W
千家信息网最后更新 2025年11月09日SpringBoot WebSocket怎么实时监控异常的详细流程

本篇内容主要讲解"SpringBoot WebSocket怎么实时监控异常的详细流程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot WebSocket怎么实时监控异常的详细流程"吧!

目录
  • 写在前面

  • 实现:

    • 前端:

    • 后端:

  • 测试

    写在前面

    此异常非彼异常,标题所说的异常是业务上的异常。

    最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。

    因为需要服务端主动向客户端发送消息,所以很容易的就想到了用WebSocket来实现这一功能。

    WebSocket就不做介绍了

    前端略微复杂,需要在一张位置分布图上进行鼠标描点定位各个设备和根据不同屏幕大小渲染,本文不做介绍,只是简单地用页面样式进行效果呈现。

    绿色代表正常,红色代表异常

    预期效果,未接收到请求前----->id为3的提交了异常,id为3的王五变成了红色

        

    实现:

    前端:

    直接贴代码

                        实时监控                    
    {{item.id}}.{{item.name}}

    后端:

    项目结构是这样子的,后面的代码关键注释都有,就不重复描述了

    1、新建SpringBoot工程,选择web和WebSocket依赖

    2、配置application.yml

    #端口server:  port: 18801#密码,因为接口不需要权限,所以加了个密码做校验mySocket:  myPwd: jae_123

    3、WebSocketConfig配置类

    @Configurationpublic class WebSocketConfig {    /**     * 注入一个ServerEndpointExporter,该Bean会自动注册使用@ServerEndpoint注解申明的websocket endpoint     */    @Bean    public ServerEndpointExporter serverEndpointExporter(){        return new ServerEndpointExporter();    }}

    4、WebSocketServer类,用来进行服务端和客户端之间的交互

    /** * @author jae * @ServerEndpoint("/webSocket/{uid}") 前端通过此URI与后端建立链接 */@ServerEndpoint("/webSocket/{uid}")@Componentpublic class WebSocketServer {    private static Logger log = LoggerFactory.getLogger(WebSocketServer.class);    //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。    private static final AtomicInteger onlineNum = new AtomicInteger(0);    //concurrent包的线程安全Set,用来存放每个客户端对应的WebSocketServer对象。    private static CopyOnWriteArraySet sessionPools = new CopyOnWriteArraySet();    /**     * 有客户端连接成功     */    @OnOpen    public void onOpen(Session session, @PathParam(value = "uid") String uid){        sessionPools.add(session);        onlineNum.incrementAndGet();        log.info(uid + "加入webSocket!当前人数为" + onlineNum);    }    /**     * 连接关闭调用的方法     */    @OnClose    public void onClose(Session session) {        sessionPools.remove(session);        int cnt = onlineNum.decrementAndGet();        log.info("有连接关闭,当前连接数为:{}", cnt);    }    /**     * 发送消息     */    public void sendMessage(Session session, String message) throws IOException {        if(session != null){            synchronized (session) {                session.getBasicRemote().sendText(message);            }        }    }    /**     * 群发消息     */    public void broadCastInfo(String message) throws IOException {        for (Session session : sessionPools) {            if(session.isOpen()){                sendMessage(session, message);            }        }    }    /**     * 发生错误     */    @OnError    public void onError(Session session, Throwable throwable){        log.error("发生错误");        throwable.printStackTrace();    }}

    5、WebSocketController类,用于进行接口测试

    @RestController@RequestMapping("/open/socket")public class WebSocketController {    @Value("${mySocket.myPwd}")    public String myPwd;    @Autowired    private WebSocketServer webSocketServer;    /**     * 手机客户端请求接口     * @param id    发生异常的设备ID     * @param pwd   密码(实际开发记得加密)     * @throws IOException     */    @PostMapping(value = "/onReceive")    public void onReceive(String id,String pwd) throws IOException {        if(pwd.equals(myPwd)){  //密码校验一致(这里举例,实际开发还要有个密码加密的校验的),则进行群发            webSocketServer.broadCastInfo(id);        }    }}

    测试

    1、打开前端页面,进行WebSocket连接

    控制台输出,连接成功

    2、因为是模拟数据,所以全部显示正常,没有异常提交时的页面呈现

    3、接下来,我们用接口测试工具Postman提交一个异常

    注意id为3的这个数据的状态变化

    我们可以看到,id为3的王五状态已经变成异常的了,实时通讯成功。

    到此,相信大家对"SpringBoot WebSocket怎么实时监控异常的详细流程"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    实时 消息 监控 前端 客户 客户端 密码 测试 成功 接口 设备 错误 页面 流程 实际 王五 服务 安全 事件 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 支付宝网络技术扣费啥意思 数据库打开后显示白色的圈圈 属于网络安全涉及范围 计算机网络技术图书 计算机网络技术相关文章 强化网络安全预防网络沉迷主题 两台数据库服务器同步 对小型企业网络安全的认识 5g网络技术有死角吗 计算机上找不到数据库的位置 大数据库课后习题 网络安全知识互动游戏 类图到数据库的设计 社区国家网络安全宣传 数据库服务安全与隐私保护 江门app软件开发轻松办理 海口深圳网络安全培训 联想服务器td340机箱怎么开 邯郸网络技术 计算机网络技术专业课包含高数吗 Pg数据库中一个字段有多个值 长沙crm软件开发价格 软件开发一系列文档 access论坛连接数据库 海博软件开发公司电话 阿里云登录服务器密码修改 锐捷云服务器如何恢复云桌面 中兴服务器系统管理 泉州网络安全培训机构 新乡叮叮网络技术有限公司
    0