在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
为什么需要服务器推送事件: 因为如果需要保持前台数据的实时更新例如,IM聊天,股票信息, 1.可以在客户端不断地调用服务端的方法来获得新数据,但是这样会很消耗服务器资源,导致系统变慢! 2 html5的新特性能在服务器直接发送最新数据到前台进行显示。 先看后台的写法:WebForm8.aspx.cs protected void Page_Load(object sender, EventArgs e) { Response.ContentType = "text/event-stream"; Response.Expires = -1; while (true) { Response.Write("date1235:" + DateTime.Now+"\n\n"); Thread.Sleep(2000); //向客户端发送当前的缓冲数据 //如果你将Flush写的循环外面,将会等循环执行完后一起显示到前台,当然这个是死循环 Response.Flush(); } } 在看html的写法: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm8.aspx.cs" Inherits="WebApplication1.WebForm8" %> <!DOCTYPE html><!--注意此处是HTML5的标识,写出这样代表目前用的html版本是5--> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form > <div > </div> </form> </body> </html> <script type="text/javascript"> //HTML5 服务器推送事件 function ServerSendClient() { if (typeof (EventSource) !== "undefined") { var source = new EventSource("WebForm8.aspx.cs"); source.onmessage = function (event) { document.getElementById("result").innerHTML += event.data + "<br />"; }; } else { document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events..."; } } ServerSendClient(); </script> 前台截图: |
请发表评论