当前位置: 首页 > news >正文

深圳石岩做网站命理网站开发

深圳石岩做网站,命理网站开发,wap网站 全屏,wordpress 导航图片以下是一个完整的基于 Spring Boot 的 Server-Sent Events (SSE) 示例#xff0c;包括服务端和客户端的实现。 一、服务端实现 1. 创建 Spring Boot 项目 首先#xff0c;创建一个基本的 Spring Boot 项目#xff0c;并添加 spring-boot-starter-web 依赖。在 pom.xml 中…以下是一个完整的基于 Spring Boot 的 Server-Sent Events (SSE) 示例包括服务端和客户端的实现。 一、服务端实现 1. 创建 Spring Boot 项目 首先创建一个基本的 Spring Boot 项目并添加 spring-boot-starter-web 依赖。在 pom.xml 中添加以下内容 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency /dependencies2. 创建 SSE 控制器 创建一个控制器来处理 SSE 连接并推送实时消息。 SseController.java package com.example.sse;import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;import java.io.IOException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit;RestController public class SseController {private final ExecutorService executorService Executors.newCachedThreadPool();GetMapping(/sse)public SseEmitter handleSse() {SseEmitter emitter new SseEmitter();executorService.execute(() - {try {for (int i 0; i 10; i) {emitter.send(Message i, MediaType.TEXT_PLAIN);TimeUnit.SECONDS.sleep(1);}emitter.complete();} catch (IOException | InterruptedException e) {emitter.completeWithError(e);}});return emitter;} }3. 配置跨域可选 如果前端和后端运行在不同端口上需要配置跨域。 CorsConfig.java package com.example.sse;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration public class CorsConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**).allowedOriginPatterns(*).allowedMethods(GET, POST, PUT, DELETE).allowedHeaders(*).allowCredentials(true);} }二、客户端实现 在前端页面中使用 EventSource 来订阅 SSE。 index.html !DOCTYPE html html langen headmeta charsetUTF-8titleSSE Example/title /head bodyh1Server-Sent Events Example/h1div idevents/divscriptconst eventSource new EventSource(/sse);eventSource.onmessage function(event) {const newElement document.createElement(div);newElement.innerHTML Message: event.data;document.getElementById(events).appendChild(newElement);};eventSource.onerror function(event) {eventSource.close();alert(EventSource failed: event);};/script /body /html三、运行和测试 启动 Spring Boot 应用。在浏览器中访问 http://localhost:8080即可看到服务端每秒推送的消息。 四、扩展功能 1. 动态推送消息 可以通过维护一个 SseEmitter 的映射来动态推送消息。 SseController.java动态推送版本 package com.example.sse;import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*;import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap;RestController public class SseController {private final MapString, SseEmitter emitterMap new ConcurrentHashMap();GetMapping(/sse/{userId})public SseEmitter connect(PathVariable String userId) {SseEmitter emitter new SseEmitter();emitterMap.put(userId, emitter);emitter.onCompletion(() - emitterMap.remove(userId));emitter.onTimeout(() - emitterMap.remove(userId));emitter.onError(e - emitterMap.remove(userId));return emitter;}GetMapping(/push/{userId})public void push(PathVariable String userId, RequestParam String message) {SseEmitter emitter emitterMap.get(userId);if (emitter ! null) {try {emitter.send(message);} catch (IOException e) {emitter.completeWithError(e);emitterMap.remove(userId);}}} }2. 使用 WebFlux 实现 SSE 如果需要更高效的响应式编程支持可以使用 Spring WebFlux。 SseController.javaWebFlux 版本 package com.example.sse;import org.springframework.http.MediaType; import org.springframework.http.codec.ServerSentEvent; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux;import java.time.Duration;RestController public class SseController {GetMapping(/sse/stream)public FluxServerSentEventString streamSse() {return Flux.interval(Duration.ofSeconds(1)).map(sequence - ServerSentEvent.Stringbuilder().id(String.valueOf(sequence)).event(periodic-event).data(Current time: java.time.LocalTime.now()).build());} }通过以上步骤你可以实现一个完整的基于 Spring Boot 的 SSE 应用。
http://www.hkea.cn/news/14279871/

相关文章:

  • 淘客类网站如何做排名wordpress 添加控件
  • 网站建设基础实验1实名认证的重要性
  • c#如何做公司网站如何将vs做的网站备份出来6
  • 网站怎么做伪静态页面门户模板
  • 温州建网站wordpress 图片居中
  • 怎么做网站界面分析aliyun wordpress
  • 网站运营与管理实验报告连云港企业网站建设
  • 安阳企业网站优化外包建设电动摩托车官网
  • seo网站推广怎么收费成都网站建设 工作室
  • 河北建设银行石家庄分行招聘网站网站域名ip查询
  • 凤冈县住房和城乡建设局网站佛山 品牌设计
  • 淮北做网站规模以上工业企业个数
  • 张家港网站建设培训网站后台网址忘记了 php
  • 做五金行业的外贸网站西安楼市最新房价
  • 专业网站制作企业dw网页编辑器
  • 北京网站建设服务公司订单系统单页面网站怎么做
  • 永康企业网站建设公司wordpress 755权限
  • 外贸公司网站空间做网站带源码软件-dw
  • 深圳商城网站建立一个企业网站需要多少钱
  • 做淘宝客新增网站推广西安建站免费模板
  • jsp网站购买空间局域网建WordPress
  • 网站开发哪里有聊城做手机网站
  • 安徽免费网站制作黄埔网站开发
  • 网站后台建设费用创建全国文明城市方案
  • 牡丹江林口县建设局网站app开发公司网站
  • 网站源码上传到哪个文件夹广州市番禺区住房和建设局网站
  • 海北公司网站建设网络推广怎么推广
  • 我的钢铁网网站架构网络推广工作描述
  • 凡科建站官网免费注册佛山顺德网站建设
  • 网站上传权限百度竞价排名技巧