• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ASP.NET中ServerPush用法实例分析

asp 搞代码 4年前 (2022-01-03) 16次浏览 已收录 0个评论

这篇文章主要介绍了ASP.NET中ServerPush用法,来源gaodaima#com搞(代@码网实例分析了通过ServerPush实现服务器推送功能,需要的朋友可以参考下

本文实例讲述了ASP.NET中ServerPush用法。分享给大家供大家参考。具体分析如下:

什么是ServerPush,服务器向客户端“推送“,其实就是”长连接“

只有浏览器请求服务器端,服务器端才给浏览器响应数据,不会主动向浏览器推送数据,这是一种安全考虑,也是提高服务器的性能考虑,如果服务器向浏览器主动推送数据,就要用到ServerPush等技术模拟实现。

举个例子:

通过两个页面互相发送消息实现,消息放到数据库。

 /// <summary> /// ServerPush1 的摘要说明 /// </summary> public class ServerPush1 : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "application/json"; string action = context.Request["action"]; if (action == "send")//发送 { string me = context.Request["me"]; string toUserName = context.Request["toUserName"]; string msg = context.Request["msg"]; SQLHpler.ExecuteNonQuery("INSERT INTO T_Msgs(FromUserName,ToUserName,Msg) VALUES(@FromUserName,@ToUserName,@Msg)", new SqlParameter("@FromUserName", me), new SqlParameter("@ToUserName", toUserName), new SqlParameter("@Msg", msg)); context.Response.Write(new JavaScriptSerializer().Serialize(new { Status = "ok" })); } else if (action == "receive") //登陆,并持续查询、接收对方发过来的数据 { //做一个简单的例子,以ServerPush1.ashx?me=sean //请把发给sean的消息发给我一条 string me = context.Request["me"]; while (true) { DataTable dt = SQLHpler.ExecuteQuery("SELECT TOP 1 * FROM T_Msgs WHERE ToUserName=@ToUserName",new SqlParameter("@ToUserName", me)); if (dt.Rows.Count <= 0) { Thread.Sleep(500);//没找到,休息500ms再查询,这样避免对数据库的查询压力,和占用WEB服务器CPU资源 continue;//下一次while } else { DataRow row = dt.Rows[0]; long id = (long)row["Id"]; string fromUserName = (string)row["FromUserName"]; string msg = (string)row["Msg"]; //查询完之后要删除消息,否则会出现死循环,不停的给页面输出同一个消息 SQLHpler.ExecuteNonQuery("DELETE FROM T_Msgs WHERE Id=@Id",new SqlParameter("@Id",id)); //创建一个匿名对象,将查询到的数据存到里面 var data = new { FromUserName = fromUserName, Msg = msg, Id = id }; string json = new JavaScriptSerializer().Serialize(data);//将匿名对象转换为json context.Response.Write(json);//将请求结果以json格式返回 break; } } } else { throw new Exception("action错误"); } } 
   <title></title> 发送人:<br /> 接收人:<br /> 输入消息:<br /> 聊天记录:<br /><ul id="ulMsg"> </ul>

希望本文所述对大家的asp.net程序设计有所帮助。

以上就是ASP.NET中ServerPush用法实例分析的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ASP.NET中ServerPush用法实例分析

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址