所谓SSE,就是浏览器向服务器发送一个HTTP请求,然后服务器不断单向地向浏览器推送“信息”(message)。这种信息在格式上很简单,就是“信息”加上前缀“data: ”,然后以“\n\n”结尾(既是所谓的事件流:通过一个持久的HTTP 响应发送,这个响应的MIME 类型为text/event-stream。响应的格式是纯文本)。

客户端代码:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/js/jquery-3.3.1.min.js"></script>
</head>

<body>
<ul id="test"></ul>
<script>
var test = $("#test");
if (typeof (EventSource != "undefined")) {

var es = new EventSource("/home/data");

es.onmessage = function (e) {
console.log(e);
test.append("<li>" + e.data + "</li>");
}
} else {
$("body").append("不支持EES");
}
</script>
</body>
</html>

服务端代码:

public IActionResult Index()
{
return View();
}

public ActionResult data()
{
Random random = new Random();
string _event = "message";
string data = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
if (random.Next(0, 10) % 3 == 0)
{
data = "新消息";
// _event = "NewMsg";      //切换监听事件
}

Response.ContentType = "text/event-stream";
return Content($"retry:{1000}\nevent:{_event}\nid:{DateTime.Now.Ticks}\ndata:{data}\n\n");
}

最新文章

  1. jqGrid jqGrid分页参数+条件查询
  2. 关于在Xcode控制台打印的注意点
  3. ORA-00060:等待资源时检测到死锁的一种处理方法
  4. 多线程中的synchronized
  5. 动态规划 求解 Minimum Edit Distance
  6. EF学习笔记(一)
  7. Page 63-64 Exercises 2.3.7 -------Introduction to Software Testing (Paul Ammann and Jeff Offutt)
  8. Java for循环的几种用法详解
  9. &quot;is not on any development teams &quot; Xcode的账号错误问题
  10. ADO接口
  11. SQL之删除触发器
  12. 【GISer&amp;&amp;Painter】GISer
  13. PHP中的浮点精度和类型
  14. [Reinforcement Learning] Policy Gradient Methods
  15. docker的基础命令
  16. ARM 汇编学习笔记
  17. 2257: [Jsoi2009]瓶子和燃料
  18. 【NOIP2018】【RP++!】【神大退役记+一丢丢回忆录】
  19. 《算法》第六章部分程序 part 5
  20. is 和 as 运算符

热门文章

  1. Dart语言简介
  2. 【每日一题】【暴力&amp;双指针&amp;动态规划】42. 接雨水-211130/220214
  3. python中函数教程
  4. android nativate 动态注册 静态注册
  5. Oracle查询,将某列查询结果用逗号隔开,拼接成一行(listagg函数)
  6. Dijkstra 算法说明与实现
  7. (admin.E104) &#39;XXXX&#39; must inherit from &#39;InlineModelAdmin&#39;.
  8. Javaweb后端学习笔记
  9. [C#]C++/CLI中^的含义
  10. hashmap的一些性能测试