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

网站建设背景和目标关键词采集软件

网站建设背景和目标,关键词采集软件,怎么把百度地图放到网站上,微网站站点名称摘要 本文记录了一次完整的Spring Boot整合Server-Sent Events(SSE)实现实时消息推送的开发过程,重点分析前后端联调时遇到的跨域问题及解决方案。通过CrossOrigin注解的实际应用案例,帮助开发者快速定位和解决类似问题。 一、项…

摘要

本文记录了一次完整的Spring Boot整合Server-Sent Events(SSE)实现实时消息推送的开发过程,重点分析前后端联调时遇到的跨域问题及解决方案。通过@CrossOrigin注解的实际应用案例,帮助开发者快速定位和解决类似问题。


一、项目背景与需求

开发一个实时订单推送系统,需要实现:

  1. 司机端与服务端的持久化连接
  2. 订单信息实时推送
  3. 客户端主动关闭连接

二、技术方案设计

2.1 技术选型

技术组件作用说明
Spring Boot后端服务框架
SSE服务端推送协议
Vue/原生HTML前端消息展示

2.2 系统架构图

 前端页面(localhost:63342)│▼Spring Boot服务端(localhost:9000)│▼订单推送系统(业务逻辑)

三、关键代码实现

3.1 前端实现(监听客户端)

<script>
// 建立SSE连接(关键代码)
const source = new EventSource(`http://localhost:9000/service-sse-push/connect?userId=1&identity=1`
);// 消息接收处理
source.addEventListener("message", e => {document.getElementById("message").innerHTML += e.data + '<br/>';
});// 关闭连接时通知服务端
function sourceClose() {fetch(`http://localhost:9000/close?userId=1&identity=1`);source.close();
}
</script>

3.2 后端核心控制器

@RestController
@CrossOrigin(origins = "http://localhost:63342") // 解决跨域的关键注解
public class SseController {// 存储所有连接的Mappublic static Map<String, SseEmitter> sseEmitterMap = new HashMap<>();/*** 建立SSE连接端点* @param userId 用户ID* @param identity 身份标识*/@GetMapping("/connect")public SseEmitter connect(@RequestParam Long userId, @RequestParam String identity) {SseEmitter emitter = new SseEmitter(60_000L);String key = SsePrefixUtils.generatorSseKey(userId, identity);sseEmitterMap.put(key, emitter);return emitter;}/*** 消息推送端点* @param pushRequest 推送请求体*/@PostMapping("/push")public String push(@RequestBody PushRequest pushRequest) {String key = SsePrefixUtils.generatorSseKey(pushRequest.getUserId(), pushRequest.getIdentity());if (sseEmitterMap.containsKey(key)) {sseEmitterMap.get(key).send(pushRequest.getContent());return "推送成功";}return "用户未连接";}
}

四、遇到的典型问题

4.1 跨域问题现象

在这里插入图片描述

控制台报错

Access to XMLHttpRequest at 'http://localhost:9000/connect' from origin 
'http://localhost:63342' has been blocked by CORS policy

4.2 问题分析

  1. 前端运行在localhost:63342(WebStorm默认端口)
  2. 后端服务运行在localhost:9000
  3. 浏览器安全策略阻止跨域请求

4.3 解决方案

// 在Controller类上添加注解
@CrossOrigin(origins = "http://localhost:63342") // 或在方法级别添加
@GetMapping("/connect")
@CrossOrigin(origins = "http://localhost:63342")
public SseEmitter connect(...) {...}

注解作用说明

  • origins:允许指定的源访问
  • methods:允许的HTTP方法(默认所有)
  • allowedHeaders:允许的请求头
  • maxAge:预检请求缓存时间

五、其他优化实践

5.1 连接保活机制

// 添加心跳检测
emitter.onTimeout(() -> {log.info("连接超时:{}", key);sseEmitterMap.remove(key);
});emitter.onCompletion(() -> {log.info("连接完成:{}", key);sseEmitterMap.remove(key);
});

5.2 线程安全改进

// 改用ConcurrentHashMap
public static Map<String, SseEmitter> sseEmitterMap = new ConcurrentHashMap<>();

5.3 连接监控看板

@Scheduled(fixedRate = 5000)
public void printConnections() {log.info("当前活跃连接数:{}", sseEmitterMap.size());
}

六、完整联调流程

6.1 启动顺序

  1. 启动Spring Boot服务(端口9000)
  2. 用浏览器打开前端页面(端口63342)

6.2 测试步骤

  1. 点击页面按钮建立连接
  2. 通过Postman发送推送请求
  3. 观察页面消息展示
  4. 点击关闭按钮断开连接

测试结果示例

用户[1_1] 成功建立连接
收到订单消息:新订单到达,请及时处理
用户[1_1] 主动断开连接

七、经验总结

  1. 跨域问题定位:当出现CORS policy错误时,首先检查前端请求地址与后端允许的源
  2. 连接管理要点
    • 及时清理失效连接
    • 使用线程安全集合
    • 添加心跳检测机制
  3. 生产环境建议
    • 使用Nginx反向代理统一端口
    • 配置HTTPS加密通信

踩坑心得

跨域问题就像程序员的"拦路虎",通过这次实践深刻理解了浏览器同源策略的重要性。@CrossOrigin虽好,但生产环境需要更严格的安全控制。

讨论话题
你在使用SSE时还遇到过哪些奇葩问题?欢迎在评论区分享你的踩坑经历!

http://www.dtcms.com/wzjs/466593.html

相关文章:

  • 开发游戏用什么编程软件昆山seo网站优化软件
  • 郑州做网站的公司msgg免费推广网站排名
  • 信阳市住房建设局网站描述建设一个网站的具体步骤
  • 对外宣传网站建设方案网络推广员的前景
  • 购物网站制作怎么做免费推广平台排行榜
  • 网上做网站怎么赚钱吗长沙seo网站优化公司
  • 怎么和其它网站做友情链接四川省最新疫情情况
  • 网站建设海南济宁百度推广开户
  • 可以让外国人做问卷调查的网站百度快照官网登录
  • 建设部网站焊工证件查询品牌推广平台
  • 广州建设执业资格注册中心网站个人网站免费制作平台
  • 用css设计网页的代码百度seo课程
  • 哪里网站海报做的比较好电商怎么做如何从零开始
  • 最便宜手机网站建设海外seo网站推广
  • 网站如何做360度全景b2b多平台一键发布
  • 上海网站建设 浦东智能营销系统开发
  • 做爰网站十大小说网站排名
  • 建筑工程网站哪个好seo研究中心培训机构
  • 惠州网站建设选惠州邦如何做网站 新手 个人 教程
  • 专门做旅游的网站seo个人优化方案案例
  • 天津建设科技杂志的官方网站河南网站公司
  • 铜川网站开发广东seo推广方案
  • 个体工商户可以搞网站建设网络平台推广方式
  • 七台河建网站seo的主要分析工具
  • 旅游政务网站建设方案建站abc
  • 无锡网站建设开发关键词排名seo
  • hbuilder 做网站推广软文代写
  • 做会员卡的网站在线关键词排名推广怎么做
  • 大连手机自适应网站建设电话系统优化软件哪个好
  • oa软件公司排名东莞关键词优化软件