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

九江做网站的公司哪里好如何做供求网站

九江做网站的公司哪里好,如何做供求网站,北京网站优化方式,wordpress 字体 服务器SseEmitter 是 Spring Framework 中用于实现 Server-Sent Events (SSE) 的一个类。SSE 是一种允许服务器向客户端推送实时更新的技术,特别适合需要从服务器到客户端的单向消息传递场景,如股票价格更新、社交媒体的新消息通知等。 Server-Sent Events (S…

SseEmitter 是 Spring Framework 中用于实现 Server-Sent Events (SSE) 的一个类。SSE 是一种允许服务器向客户端推送实时更新的技术,特别适合需要从服务器到客户端的单向消息传递场景,如股票价格更新、社交媒体的新消息通知等。

Server-Sent Events (SSE) 简介

  • 单向通信:SSE 支持从服务器到客户端的单向通信,即服务器可以主动向客户端发送数据,而不需要客户端发起请求。
  • 持久连接:一旦建立连接,该连接会保持打开状态,直到客户端或服务器决定关闭它。
  • 自动重连:如果连接意外断开,浏览器会自动尝试重新连接。
  • 文本数据:SSE 仅支持传输 UTF-8 编码的文本数据,不支持二进制数据。

SseEmitter 类的作用

在 Spring 应用中,SseEmitter 提供了一种简便的方式来实现 SSE 功能。它允许开发者通过 HTTP 响应流式地向客户端发送事件。

主要特性
  1. 异步处理SseEmitter 支持异步处理,这意味着它可以长时间运行而不阻塞主线程。
  2. 事件驱动:可以通过调用 send() 方法来发送事件给客户端。
  3. 超时管理:可以设置超时时间,超过这个时间如果没有新的事件发生,连接将被关闭。
  4. 错误处理:提供了对错误处理的支持,可以通过 onError()onCompletion() 回调方法来处理异常和连接关闭的情况。

使用示例

下面是一个简单的例子,展示了如何使用 SseEmitter 来实现 SSE:

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
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;@RestController
@RequestMapping("/events")
public class SseController {private final ExecutorService executorService = Executors.newCachedThreadPool();@GetMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE)public SseEmitter subscribe() {SseEmitter emitter = new SseEmitter();// 模拟一个后台任务,定期发送事件executorService.execute(() -> {try {for (int i = 0; i < 10; i++) {SseEmitter.SseEventBuilder event = SseEmitter.event().data("SSE event " + i).id(String.valueOf(i)).name("sse event");emitter.send(event);Thread.sleep(1000); // 每秒发送一次}emitter.complete();} catch (IOException | InterruptedException e) {emitter.completeWithError(e);}});// 设置超时处理emitter.onTimeout(() -> {System.out.println("SSE timeout occurred!");emitter.complete();});// 设置错误处理emitter.onError((e) -> {System.out.println("SSE error occurred: " + e.getMessage());emitter.completeWithError(e);});return emitter;}
}

关键点解释

  1. 创建 SseEmitter 实例

    SseEmitter emitter = new SseEmitter();
    

    创建一个新的 SseEmitter 实例,默认情况下没有设置超时时间。你可以通过构造函数参数指定超时时间(以毫秒为单位)。

  2. 发送事件

    emitter.send(SseEmitter.event().data("SSE event " + i).id(String.valueOf(i)).name("sse event"));
    

    使用 send() 方法发送事件。SseEmitter.event() 返回一个 SseEventBuilder,可以通过它构建事件对象,并设置事件的数据、ID 和名称等属性。

  3. 超时处理

    emitter.onTimeout(() -> {System.out.println("SSE timeout occurred!");emitter.complete();
    });
    

    当连接超过设定的超时时间且没有新的事件发生时,触发超时处理逻辑。

  4. 错误处理

    emitter.onError((e) -> {System.out.println("SSE error occurred: " + e.getMessage());emitter.completeWithError(e);
    });
    

    当发生错误时,触发错误处理逻辑,并可以选择性地结束连接。

  5. 完成连接

    emitter.complete();
    

    手动完成连接,表示不会再有更多事件发送。

客户端接收 SSE

在前端,可以使用 JavaScript 来接收 SSE 事件。例如:

const eventSource = new EventSource('/events');eventSource.onmessage = function(event) {console.log('New message:', event.data);
};eventSource.onerror = function(error) {console.error('Error occurred:', error);
};

总结

  • SseEmitter 是 Spring 提供的一个用于实现 Server-Sent Events 的类,简化了从服务器向客户端推送实时更新的过程。
  • 它支持异步事件发送、超时管理和错误处理,非常适合需要实时更新的应用场景,如社交网络的通知系统、实时监控应用等。
  • 结合合适的后端逻辑和前端代码,可以轻松实现实时双向通信的一部分功能(尽管 SSE 只支持单向从服务器到客户端的通信)。

文章转载自:

http://BXNFttMx.gpnwq.cn
http://sEn9cOhr.gpnwq.cn
http://zMAikJGn.gpnwq.cn
http://Vj8gX7Jn.gpnwq.cn
http://D1cHHu8B.gpnwq.cn
http://4xd8Cb75.gpnwq.cn
http://W1Ud0FpB.gpnwq.cn
http://71LnR1AF.gpnwq.cn
http://whtaTTNa.gpnwq.cn
http://NsPXEe18.gpnwq.cn
http://B9CSRglT.gpnwq.cn
http://IGQm5GPR.gpnwq.cn
http://CogeBXGE.gpnwq.cn
http://NcdCHI9T.gpnwq.cn
http://SYhoMeZc.gpnwq.cn
http://fPhBsujr.gpnwq.cn
http://Vn6wF9oH.gpnwq.cn
http://x6Regoq2.gpnwq.cn
http://awpFywm1.gpnwq.cn
http://xSC39UOq.gpnwq.cn
http://O5GpEaeA.gpnwq.cn
http://HdKWDHOG.gpnwq.cn
http://17J0QMwX.gpnwq.cn
http://6T9LgEtG.gpnwq.cn
http://NKW7JQw4.gpnwq.cn
http://MexGhBSw.gpnwq.cn
http://cvVLnyeq.gpnwq.cn
http://Pk3x6dQL.gpnwq.cn
http://rdjwUj3X.gpnwq.cn
http://eIAexSH9.gpnwq.cn
http://www.dtcms.com/wzjs/766239.html

相关文章:

  • 关于化妆品的网页设计专业网站优化电话
  • 用php做网站后台教育培训机构推荐
  • 洛阳做网站的公司哪家好帝国系统做网站地图
  • 废料回收网站建设微信小程序需要收费吗
  • 百度seo什么意思seo兼职招聘信息
  • 网站 功能需求营销网站建设公司效果
  • 成都市网站设计开发中国建筑业协会
  • ppt可以做网站吗织梦生成网站地图
  • 营销型企业网站建设的步骤网站一级域名和二级域名
  • 天津手网站开发有什么较好的网站开发框架
  • 专业营销网站建设企业官网建站网站
  • 同ip怎么做不同的网站中国砖瓦招聘求职平台
  • 企业网站建设要多少seo关键词优化推广哪家好
  • ps做网站页面设置为多大做暧暧网站
  • seo网站优化方案摘要wordpress密码漏洞
  • 建设明星网站的目的西安保障性住房建设投资中心网站
  • 南京网站建设排名wordpress 分类目录 标签转换器
  • 环球资源网官方网站手机网站建设的重要性
  • 网站建设与管理实践收获asp网站优缺点
  • 网站维护有哪些企业网站域名注册如何填写
  • 重庆网站建设夹夹虫公司.可信南京师范大学课程建设网站
  • 做排版的网站东莞市建设局官网
  • 天津旅游网站建设浉河网站建设
  • 温州网站建设公司排名wordpress文章加音频
  • 北京网站制作公司兴田德润可以不怎么往网站里做游戏
  • 公司网站建设推进表免费做网站软件下载
  • 网站建设官网怎么收费协会网站信息平台建设
  • 做网站如何分页全国公共建筑信息平台
  • 美文网站源码淘宝客网站备案信息
  • 做企业网站还有市场吗北京终端区优化