Solon 也是 SSE(Server Send Events)后端开发的优选

news/2025/1/30 22:52:10/

Solon 2.3.6 在开发异步接口时,顺带也为 Solon Web 提供了 SSE (Server-Sent Events) 协议的支持插件:

<dependency><groupId>org.noear</groupId><artifactId>solon.web.sse</artifactId>
</dependency>

如果不熟 SSE 的,可以通过搜索引擎查询了解下。//个人还是感觉 ws 更方便用:)

使用示例

按群里用户的要求,体验方式尽量采用大家熟悉的命名与风格。

@Controller
public class SseDemoController {static Map<String, SseEmitter> emitterMap = new HashMap<>();@Mapping("/sse/{id}")public SseEmitter sse(String id) {//3000L 是后端异步超时return new SseEmitter(3000L).onCompletion(() -> emitterMap.remove(id)).onError(e -> e.printStackTrace()).onInited(s -> emitterMap.put(id, s)); //在 onInited 里,可以发消息(初始化完成之前,是不能发消息的)}@Mapping("/sse/put/{id}")public String ssePut(String id) {SseEmitter emitter = emitterMap.get(id);if (emitter == null) {return "No user: " + id;}String msg = "test msg -> " + System.currentTimeMillis();emitter.send(new SseEvent().id(Utils.guid()).data(msg).reconnectTime(1000L));return "Ok";}@Mapping("/sse/del/{id}")public String sseDel(String id) {SseEmitter emitter = emitterMap.get(id);if (emitter != null) {emitter.complete();}return "Ok";}
}

注意事项

  • 这个插件可能需要把线程数调大些
#服务 http 最小线程数(默认:0表示自动,支持固定值 2 或 内核倍数 x2)
server.http.coreThreads: 0 
#服务 http 最大线程数(默认:0表示自动,支持固定值 32 或 内核倍数 x32)
server.http.maxThreads: 0

更多配置可参考:《应用常用配置说明》

  • 关于超时的说明

超时是指服务端的异步超时,默认为 30000L(即30秒)。其中,0L 代表默认,-1L代表不超时。

  • 提高连接数

要用好,后端超时、前端重连时间以及线程数配置。

Solon 是什么开源项目?

一个,Java 新的生态型应用开发框架。它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态)。与其他框架相比,它解决了两个重要的痛点:启动慢,费资源。

解决痛点?

由于Solon Bean容器的独特设计,不会因为扩展依赖变多而启动很慢(开发调试时,省时、爽快)!以知名开源项目“小诺”为例:

  • “snowy-spring 版” 启动 30-50秒
  • “snowy-solon 版” 启动3-5秒,内存省了1/3(有兴趣的,欢迎拉取代码体验)

所谓:“时间就是生命,效率就是金钱”,“天下武功,唯快不破”。

相对于 Spring Boot 和 Spring Cloud 的项目,有什么特点?

  • 启动快 5 ~ 10 倍。 (更快)
  • qps 高 2~ 3 倍。 (更高)
  • 运行时内存节省 1/3 ~ 1/2。 (更少)
  • 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小)
  • 同时支持 jdk8, jdk11, jdk17, jdk20, graalvm native

项目仓库地址?

  • gitee:https://gitee.com/noear/solon
  • github:https://github.com/noear/solon

http://www.ppmy.cn/news/666515.html

相关文章

关于oppor9s手机虚拟视频技术

关于手机虚拟视频技术 目前支持机型&#xff1a;小米4&#xff0c;小米note,华为麦芒5&#xff0c;oppor9s。 实现方法&#xff1a;修改rom包&#xff0c;刷机实现虚拟视频 使用场景&#xff1a;q,和v视频聊天&#xff0c; 部分直播平台&#xff0c;补分平台人脸&#xff01;三…

oppor15android10怎么降级,OPPO R9S7.1系统怎么降回6.0版本 OPPO R9S7.1系统降级教程

类型&#xff1a;安卓其它大小&#xff1a;24.2M语言&#xff1a;中文 评分&#xff1a;10.0 标签&#xff1a; 立即下载 OPPO R9S7.1系统怎么降回6.0版本&#xff1f;OPPO R9S7.1系统降级教程。OPPO R9S7.1系统是oppo官方基于安卓7.1推送的一款全新版本&#xff0c;因为BUG问题…

vue + js 实现导出excel

效果如下图所示&#xff1a; 下面是具体的步骤&#xff1a; 第一步&#xff1a;安装依赖 **注意&#xff1a;**安装的时候注意版本号 npm install --save file-saver xlsx第二步&#xff1a;新建导出文件 Export2Excel.js /* eslint-disable */ import { saveAs } from f…

5号,7号电池充电时间计算方法

5号&#xff0c;7号电池充电小贴士&#xff1a; 1.电池说明&#xff1a; 规格&#xff1a;1.2V 5号/&#xff08;AA&#xff09;、7号/&#xff08;AAA&#xff09;&#xff1b; 容量&#xff1a;800—2500mAh 2.充电器说明&#xff1a; 充电电流&#xff1a;170-190mA&#…

碱性干电池的内阻测试方法_实测南孚一号干电池内阻

要测量电池的内阻&#xff0c;要根据全电路欧姆定律来计算&#xff0c;将电阻箱与电流表串联后&#xff0c;接到待测干电池的两极。先将电阻箱调至电阻R1时&#xff0c;测出通过的电流I1&#xff1b;当电阻箱的电阻调至R2时&#xff0c;测出通过的电流I2。再根据电源电压不变及…

“硬核拆解”南孚电池,谨防上当

更多视频&#xff0c;请到我视频号查看&#xff1a; 点击“阅读原文”查看更多分享。

第十一届 蓝桥杯 循环小数

试题 G: 循环小数 时间限制: 1.0s 内存限制: 256.0MB 本题总分&#xff1a;20 分 【问题描述】 已知 S 是一个小于 1 的循环小数&#xff0c;请计算与 S 相等的最简真分数是多少。 例如 0 . 3333 等于 1/3 &#xff0c;0 . 1666 等于 1/6。 【输入格式】 输入第一行包含…

适合520送礼物的无线蓝牙耳机,颜值高性价比高的520无线蓝牙耳机

眼看着今年的520情人节马上就要到了&#xff0c;不得不说在这个时候准备入手蓝牙耳机的还是蛮多的&#xff0c;作为礼物送给对象&#xff0c;可以戴着在车上听听音乐啥的&#xff0c;而且户外接听电话也是很方便&#xff0c;简直满满的幸福感&#xff0c;不过市面上的蓝牙耳机产…