SpringBoot使用Websocket控制评测机

流程

1. 接收评测机连接请求: 后端通过 WebSocket 等技术与评测机建立连接,接收评测机的注册请求,获取评测机的相关信息,如用户 ID、连接会话等。

2. 评测机注册: 后端将评测机的信息注册到系统中,以便后续管理和分配评测任务。

3. 任务分配: 后端根据评测机的压力情况当前系统负载情况,从待评测的任务队列中选择合适的任务,并将任务分配给评测机。

4. 评测任务执行: 评测机接收到后端分配的评测任务后,执行相应的评测操作,如运行测试用例、评测代码等。

5. 结果收集: 评测机执行完评测任务后,将评测结果发送给后端,后端接收并处理评测结果,记录到系统中

6. 状态更新: 后端根据评测机的状态更新请求,更新评测机的状态信息,如在线状态、负载情况等。

7. 异常处理: 处理评测机连接断开、任务执行失败等异常情况,保证评测系统的稳定性和可靠性。

实现

1. 创建评测机实体类: 创建一个 EvaluationMachine 类,包含评测机的相关信息,如用户 ID、WebSocket 会话等。

2. 创建评测任务实体类: 创建一个 EvaluationTask 类,包含评测任务的相关信息,如任务 ID、描述等。

3. 创建评测机服务接口: 创建一个 EvaluationMachineService 接口,定义评测机管理的相关方法,如注册评测机、分配任务、更新状态等。

4. 实现评测机服务接口: 创建一个 EvaluationMachineServiceImpl 类,实现 EvaluationMachineService 接口中定义的方法,包括注册评测机、分配任务、更新状态等逻辑。

5. 创建 WebSocket 控制器: 使用 @ServerEndpoint 注解创建 WebSocket 控制器,在其中处理评测机的连接、消息接收等逻辑。

6. 编写业务逻辑: 在 WebSocket 控制器中实现评测机的注册、任务分配、状态更新等具体业务逻辑。

7. 配置 Spring Boot 应用: 在 Spring Boot 应用的配置类中,注入 WebSocket 控制器、评测机服务实现类等相关组件,并进行必要的配置。

8. 启动应用: 启动 Spring Boot 应用,评测系统的后端服务即可运行,等待评测机连接并处理评测任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vivado 有关 SVF 链的操作

按正确顺序创建反映所有器件及其配置存储器的 SVF 链之后 , 即可开始向 SVF 链中的器件添加编程操作。 例如, 您可右键单击链中的赛灵思 a200t 器件 , 然后选择“添加器件编程操作 (Add Program Device Operation) ”对话 框, …

Logback日志框架(超详细)

logback-classic-1.2.3.jarhttp://链接: https://pan.baidu.com/s/1cA3gVB_6DEA-cSFJN6MDGw 提取码: sn8i 复制这段内容后打开百度网盘手机App,操作更方便哦 logback-core-1.2.3.jarhttp://链接: https://pan.baidu.com/s/19eCsvsO72a9PTqpXvXxrgg 提取码: 5yp…

PHP实现nginxPhp错误日志提取统计工具(路径+错误行+报错信息+次数排序)

粘贴PHP错误日志内容(NGINX 下PHP网站错误日志)。 作用:提取PHP Warning/Notice:路径错误行报错信息按出现次数排序。 以上已满足本人自己LNMP环境的调试需求&#xff0c;其他环境自己评估是否可用。 <?php //整理与分享&#xff1a;yujianyue<15058593138qq.com> $…

HomeBrew 安装与应用

目录 前言一、安装 HomeBrew二、使用 HomeBrew1、使用 brew 查看已安装的软件包2、使用 brew 安装软件包3、使用 brew 升级已安装的软件包4、brew 还有哪些命令呢&#xff1f; 前言 在 macOS&#xff08;或Linux&#xff09;系统里&#xff0c;默认是没有软件包的管理器的&…

STL中各类容器详细介绍

STL介绍 STL&#xff08;Standard Template Library&#xff09;&#xff0c;即标准模板库&#xff0c;是一个具有工业强度的&#xff0c;高效的C程序库。它被容纳于C标准程序库&#xff08;C Standard Library&#xff09;中&#xff0c;是ANSI/ISO C标准中最新的也是极具革命…

前端学习<四>JavaScript基础——06-基本数据类型:String 和 Boolean

今天这篇文章&#xff0c;我们详细讲一下基本数据类型。 String 字符串 语法 字符串型可以是引号中的任意文本&#xff0c;其语法为&#xff1a;双引号 "" 或者单引号 。 来看个示例。下面的这些&#xff0c;都是字符串&#xff1a; var a abcde;var b 千古壹号…

点云从入门到精通技术详解100篇-基于点云与图像纹理的 道路识别

目录 前言 国内外研究现状 基于视觉图像数据的道路识别方法

Photoshop 2024 中文---专业图像处理软件的又一次飞跃

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;广泛应用于创意设计和图像处理领域。它提供了丰富的绘画和编辑工具&#xff0c;包括画笔、铅笔、颜色替换、混合器画笔等&#xff0c;使用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实现各种视觉效果…

如何防止SQL注入?能够采取什么措施?

防止SQL注入主要依赖于以下几种方法&#xff1a; 1. 使用参数化查询&#xff08;预编译语句&#xff09; 参数化查询是防止SQL注入的最有效手段之一。通过使用预编译语句&#xff08;例如&#xff0c;在Java中使用PreparedStatement&#xff09;&#xff0c;可以确保用户输入…

云备份day03

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C云备份项目 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要内容介绍了第三方库httplib的一些内容&#xff0c;以及实现…

Java 进程状态

一&#xff0c;进程介绍 定义&#xff1a;进程是计算机中运行中的程序的实例。它包含了程序的代码、数据以及程序运行时所需的各种资源&#xff0c;如内存空间、CPU时间等。 特征&#xff1a; 动态性&#xff1a;进程是动态创建、执行和销毁的。并发性&#xff1a;在多道程序环…

VSCode好用插件

由于现在还是使用vue2&#xff0c;所以本文只记录vue2开发中好用的插件。 美化类插件不介绍了&#xff0c;那些貌似对生产力起不到什么大的帮助&#xff0c;纯粹的“唯心主义”罢了&#xff0c;但是如果你有兴趣的话可以查看上一篇博客&#xff1a;VSCode美化 1. vuter 简介&…

【opencv】示例-barcode.cpp 条形码检测和解码

#include <iostream> // 引入标准输入输出流库 #include "opencv2/objdetect.hpp" // 引入OpenCV物体检测库 #include "opencv2/imgproc.hpp" // 引入OpenCV图像处理库 #include "opencv2/highgui.hpp" // 引入OpenCV高层GUI库using names…

Linux系统中打包NTFS文件系统文件夹为ISO格式压缩包

首先要安装mkisofs这个命令行工具 然后命令行&#xff1a; mkisofs -D -J -joliet-long -input-charset utf-8 -o targetdir.iso targetdir/

Mybatis plus 实现IService方式,使用SpringbootTest引入service 测试

说明&#xff1a;mybatis plus 不光可以继承BaseMapper 实现数据的增删改查&#xff0c;还可以通过继承IService方式实现&#xff0c;并可提供批量的增删改等方法 如&#xff1a;saveBatch、removeBatchByIds等&#xff0c;非常方便。 1、 引包 <dependency><groupId…

169.乐理基础-调式板块总结、调式判断

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 如果不认识调号去看112.五线谱的调号&#xff08;一&#xff09;、113.五线谱的调号&#xff08;二&#xff09;、114.快…

如何使用 Midjourney?2024年最新更新

一&#xff1a;基础篇 1&#xff1a;注册 首先&#xff0c;你需要注册一个 Discord 账号&#xff0c;然后加入 Midjourney 的 Discord 服务器。或者去 Midjourney 的官网点击右下角的 Join the Beta&#xff1a; ​ 2&#xff1a;在 Discord 公共服务器里使用 注册并进入到…

MySQL面试题系列-8

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#xff0c;关系数据…

JVM基础

初识JAM JVM就是JAVA虚拟机&#xff0c;本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行JAVA字节码文件. 下面是java代码执行过程 JVM的功能 1.解释和运行 对字节码文件中的指令实时的解释成机器码 2.内存管理 自动为对象&#xff0c;方法等分配内存自动的垃圾回…

基于顺序表实现通讯管理系统!(有完整源码!)

​​​​​​​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01;​​​​​​​ 目录 1、实现思路 ​…