Java:
package com.example.huamao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Random;
/** SSE 服务器发送事件
*/
@Controller
public class SSEController {
@RequestMapping(value="/push",produces="text/event-stream;charset=utf-8")
@ResponseBody
public String push() {
Random r = new Random();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "data:Testing 1,2,3" + r.nextInt() +"\n\n";
}
@RequestMapping(value = "/sseTest", method = RequestMethod.GET)
public String getSSEView () {
return "sseTest";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>sse 测试</title>
</head>
<body>
<div id="msg_from_server"></div>
<script type="text/javascript" src="/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
if (!!window.EventSource) {
var source = new EventSource('push'); //为http://localhost:8080/testSpringMVC/push
s = '';
source.addEventListener('message', function (e) {
s += e.data + "<br/>"
$("#msg_from_server").html(s);
});
source.addEventListener('open', function (e) {
console.log("连接打开.");
}, false);
source.addEventListener('error', function (e) {
if (e.readyState == EventSource.CLOSED) {
console.log("连接关闭");
} else {
console.log(e.readyState);
}
}, false);
} else {
console.log("没有sse");
}
</script>
</body>
</html>