首页 > 基础资料 博客日记
Java Spring使用event-stream进行数据推送
2024-10-05 01:00:06基础资料围观336次
这篇文章介绍了Java Spring使用event-stream进行数据推送,分享给大家做个参考,收藏Java资料网收获更多编程知识
前端使用EventSource方式向后台发送请求,后端接收到之后使用event-stream方式流式返回。可以应用在时钟、逐字聊天等场景。
前端js示例代码(向后台请求数据,并展示到“id=date”的div上)
<script type="text/javascript">
if (typeof (EventSource) !== "undefined") {
var eventSource = new EventSource("${root}/test/getDate");
eventSource.onmessage = function (event) {
document.getElementById("date").innerHTML = event.data;
}
eventSource.addEventListener('error', function (event) {
console.log("错误:" + event);
});
eventSource.addEventListener('open', function (event) {
console.log("建立连接:" + event);
});
} else {
document.getElementById("date").innerHTML = "抱歉,您的浏览器不支持EventSource事件 ...";
}
</script>
后端java示例
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
@Controller
@RequestMapping(value = "/test")
public class TestController {
@ResponseBody
@RequestMapping(value = "/getDate", produces = "text/event-stream;charset=UTF-8")
public void getDate(HttpServletResponse response) throws Exception {
System.out.println("getDate event start");
response.setContentType("text/event-stream");
response.setCharacterEncoding("UTF-8");
response.setStatus(200);
for (int i = 0; i < 10; i++) {
response.getWriter().write("data:" + new Date() + "\n\n");
response.getWriter().flush();
Thread.sleep(1000);
}
response.getWriter().close();
System.out.println("getDate event end");
}
}
文章来源:https://blog.csdn.net/yuge_legend/article/details/136947755
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- hot100之普通数组
- 记一次诡异的线上异常赋值排查:代码没错,结果不对
- hot100之子串
- 剑指offer-1、⼆维数组中的查找
- 从尾到头打印链表
- 秒杀/高并发解决方案+落地实现 (技术栈: SpringBoot+Mysql + Redis +RabbitMQ +MyBatis-Plus +Maven + Linux + Jmeter ) -03
- @ModelAttribute、@RequestBody、@RequestParam、@PathVariable 注解对比
- Java 样板代码库 Lombok 使用详解
- wso2~自定义event-publisher
- 数组数量数据数量大 1000万黑名单用户 一百亿基础用户 查询检索思路