本文主要讲解“如何通过spring mvc SSE服务器实现事件的发送”。本文的解释简单明了,易学易懂。接下来,请跟随边肖的思路,一起学习学习“如何实现spring mvc SSE服务器发送事件”!
需要新的浏览器支持。
服务端:
package com . example . demo . controller;
import org . spring framework . web . bind . annotation . request mapping;
import org . spring framework . web . bind . annotation . rest controller;
import Java . time . LocalDatetime;
import static Java . util . concurrent . timeunit . seconds;
@RestController
publicclassSSEController{
/**
*每5秒钟向浏览器发送一条消息
*媒体类型必须是:文本/事件流。
*输出格式:
*pre
*:这是注释的单个冒号,表示服务器推送的注释。(这样可以解决http中的324,发送心跳包)
* ID: 11代表数据标识符。接收到消息后,客户端将使用该标识作为内部属性Last-Event-ID,并在成功断开和重新连接后,将Last-Event-ID发送给服务器。
*资料:我是谁?该数据是客户端接收的数据(推送格式的json数据)。客户端将把这个字段解析成一个字符串。如果一条消息有多个数据字段,客户端会自动将它连接成带有换行符的字符串。
* event:当*event:myEvent客户端收到消息时,将在当前EventSource对象上触发一个事件。此事件的名称是此字段的值。如果消息没有此字段,客户端的事件源对象将触发默认消息事件。
*重试:3000在http超时断开后客户端重新连接需要多长时间?只接受整数,单位是毫秒。如果该值不是整数,它将被自动忽略。
*/pre
*
* @ authorCanaan
*@date2019/8/2823:15
*/
@RequestMapping(值='sse_push ',产生='text/event-stream ')
publictringpush()throwsInterruptedException {
sleep(5);
Stringmsg='当前时间为-' localhatetime . now()。toString();
returnString . format(' data :% s \ n \ n ',msg);
}
}客户端:
!DOCTYPEhtml
htmllang='en '
头
metachartset=' UTF-8 '
标题标题/标题
/head
身体
/body
scripttype='text/javascript '
if(!窗户。event source){ 0
var source=new event source('/demo/SSE _ push ');
source . addeventlistener(' message ',函数(e){ 0
//数据:服务器返回的数据。
//来源:服务器端URL的域名部分,即协议、域名和端口。
//lastEventId:服务器发送的数据数量。如果没有数字,此属性为空。
console . info(e . data);
});
source.addEventListener('open '),函数(e){ 0
//console.info('连接打开');
},false);
source.addEventListener('错误',函数(e){ 0
if(e.readyState===EventSource。已关闭){ 0
Console.info('连接已关闭');
返回;
}
console . info(e);
},false);
}else{
Alert('您的浏览器不支持SSE ');
}
/script
/html谢谢阅读。以上就是“如何实现spring mvc SSE服务器发送事件”的内容。学习完这篇文章,相信你对spring mvc SSE服务器如何实现事件发送有了更深的理解,具体用法还需要实践验证。在这里,边肖将为您推送更多关于知识点的文章,敬请关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/97031.html