ASP.NET使用Jquery LigerUI 轮询方式配合Ajax实现消息推送

Posted alvis-lv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET使用Jquery LigerUI 轮询方式配合Ajax实现消息推送相关的知识,希望对你有一定的参考价值。

轮询是在客户端建立一个时钟,每隔一段时间对服务器发送一次请求,获取服务器数据,是实现消息推送最简单最易实现的一种方式,最大的缺点浏览器需要不断的向服务器发出请求,这样会占用很多的带宽,造成资源浪费

下面是JS代码:

 1 $(document).ready(function () 
 2             setInterval(invoke, 20000);
 3         );
 4         function invoke() 
 5             var xhr = $.ajax(
 6                 type: "POST",
 7                 dataType: ‘json‘,
 8                 url: "Sys_msg.get_unRead_count.xhd",
 9                 data: "",
10                 success: function (result) 
11                     var obj = eval(result);
12                     if (obj > msg_count)
13                     
14                         $.ligerTip(
15                             content: "您有<font color=red> " + (obj-msg_count) + "</font> 条新增未读消息,请注意查收!           <br> <a href=‘javascript:void(0)‘ onclick=\\"window.top.f_addTab(‘Sys_msg‘,‘消息管理‘,‘personal/message/sys_msg.aspx‘)\\">进入处理</a>",
16                             width: 240,
17                             //var winH = $(window).height(), winW = $(window).width();
18                             x: tipW - 260,   //设置气泡位置,右下角气泡显示 
19                             y: tipH - 80,
20                             callback: function (t) 
21                                 var i = 10; //10秒倒计时
22                                 calctime(t, i);
23                             
24                         );
25                     
26                     msg_count = obj;
27                     
28                 
29             );
30         
31     var tipH = $(window).height(), tipW = $(window).width();    //获取屏幕尺寸
32     function calctime(t, i) //这个函数用了递归来实现倒计时
33         
34             i--;
35             (i >= 0)
36         ? setTimeout(function () 
37             calctime(t, i);
38         , 1000)
39         : $(t).remove();
40         

后台代码:

 1 public class Sys_msg
 2     
 3         public static BLL.Sys_msg msg = new BLL.Sys_msg();
 4         public static Model.Sys_msg model = new Model.Sys_msg();
 5 
 6         public HttpContext Context;
 7         public string emp_id;
 8         public string emp_name;
 9         public HttpRequest request;
10         public string uid;
11         
12 
13         public Sys_msg()
14         
15         
16 
17         public Sys_msg(HttpContext context)
18         
19             Context = context;
20             request = context.Request;
21 
22             var userinfo = new User_info();
23             employee = userinfo.GetCurrentEmpInfo(context);
24 
25             emp_id = employee.id;
26             emp_name = PageValidate.InputText(employee.name, 50);
27             uid = PageValidate.InputText(employee.uid, 50);
28             
29         
30 
31 
32         public int get_unRead_count()
33         
34             string serchtext = $" 1=1 ";
35             //int rowcount = 0;
36             serchtext += " and isRead=0";
37             serchtext += " and UserID like N‘%" + emp_id + "%‘";
38             DataSet ds = msg.GetList(serchtext);
39             //rowcount = ds.Tables[0].Rows.Count;
40             return ds.Tables[0].Rows.Count;
41         
42 
43     

技术图片

 

以上是关于ASP.NET使用Jquery LigerUI 轮询方式配合Ajax实现消息推送的主要内容,如果未能解决你的问题,请参考以下文章

前端数据绑定,列表部分数据不显示问题解决 jQuery LigerUI 插件介绍及使用之ligerTree

[html][LigerUI]使用示例

在 asp.net 中调用需要轮询的 Web 服务的最佳编码模式是啥?

如何在 ASP.NET MVC 中进行长轮询 AJAX 请求? [复制]

jQuery版本:1.10.2,LigerUI编写页面时报错,该怎么解决?

JQuery ligerUI中的日期格式化问题