.Net使用SSE

发布时间:2023-02-09 16:00:19来源:网络阅读(815)

    HTML5有一个Server-Sent Events(SSE)功能,允许服务端推送数据到客户端。(通常叫数据推送),基于数据推送是这样的,当数据源有新数据,它马上发送到客户端,不需要等待客户端请求。这些新数据可能是最新闻,最新股票行情,来自朋友的聊天信息,天气预报等。

     

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

    html:

    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
    </head>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <body>
        <ul id="test"></ul>
        <script>
            var test = $("#test");
            if (typeof (EventSource != "undefined")) {
    
                var es = new EventSource("/home/data");
    
                es.onmessage = function (e) {
                    test.append("<li>" + e.data + "</li>");
                }
            } else {
                $("body").append("不支持EES");
            }
        </script>
    </body>
    </html>

    .net:

    public class HomeController : Controller
        {
            //
            // GET: /Home/
    
            public ActionResult Index()
            {
                return View();
            }
    
            public void data()
            {
                HttpContext.Response.ContentType = "text/event-stream";
                HttpContext.Response.CacheControl = "no-cache";
                HttpContext.Response.Write("data:" + DateTime.Now +"\n\n");
                HttpContext.Response.Flush();  
            }
    
        }

    注意:

    1、SSE是单向通道,只能服务器向浏览器端发送。

    2、SSE默认支持断线重连。

    3、SSE支持自定义发送的数据类型。

    4、SSE不支持CORS 参数url就是服务器网址,必须与当前网页的网址在同一个网域(domain),而且协议和端口都必须相同。

关键字SSE

上一篇: C#正则判断密码强度

下一篇: C#中HMACSHA256