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     }

原文地址:https://www.cnblogs.com/Alvis-Lv/p/11130309.html

时间: 2024-10-12 12:07:23

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

Web 通信 之 长连接、长轮询(long polling)---实时推送

由于浏览器属于无状态端,页面数据如果想得到及时更新,那需要与服务端保持状态连接,以便有变更能即使改变相关状态. 推荐几篇总结不错的关于长连接.长轮询帖子: 使用:setInterval\iframe\ajax方式来保持长连接: http://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html使用框架,signalR.comet SignalR:http://www.codeproject.com/Articles/3

S5PV210 串口设置与实验(轮询方式)

S5PV210 UART 相关说明 通用异步收发器简称 UART, 即 UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来传输串行数据.发送数据时, CPU 将并行数据写入 UART,UART 按照一定的格式在一根电线上串行发出:接收数据时, UART 检测另一根电线的信号,将串行收集在缓冲区中, CPU 即可读取 UART 获得这些数据. 在 S5PV210 中, UART 提供了 4 对独立的异步串口 I/O 端口,有 4 个独立的通道,每

实现web消息推送的技术和采用长轮询corundumstudio介绍

实时消息的推送,PC端的推送技术可以使用socket建立一个长连接来实现.传统的web服务都是客户端发出请求,服务端给出响应.但是现在直观的要求是允许特定时间内在没有客户端发起请求的情况下服务端主动推送消息到客户端. 有哪些可以实现web消息推送的技术: 不断地轮询(俗称“拉”,polling)是获取实时消息的一个手段:Ajax 隔一段时间(通常使用 JavaScript 的 setTimeout 函数)就去服务器查询是否有改变,从而进行增量式的更新.但是间隔多长时间去查询成了问题,因为性能和即

asp.net使用signalr实现集群集群下面的消息推送

1.选用Signalr的原因 Signalr内部给我们做了很多封装.当服务器或者浏览器不支持websoket协议的时候就使用长连接方式  不支持长连接再选用轮询的方式获取消息 websoket:与服务器保持长连接 服务器和客户端可以进行双工通讯而不用建立新的链接 长连接:服务器与客户端保持长连接 .每隔一段时间客户端询问服务器  而不用建立新连接 轮询:客户端定期向服务器发送请求询问 每次都会建立新的链接(建立新的链接使非常耗时的) 2.集群情况下的遇到的难点 当一个一台服务器的给某个用户发送了

AngularJS+ASP.NET MVC+SignalR实现消息推送

原文:http://www.mincoder.com/article/4565.shtml 背景 OA管理系统中,员工提交申请单,消息实时通知到相关人员及时进行审批,审批之后将结果推送给用户. 技术选择 最开始发现的是firebase,于是很兴奋的开始倒腾起来.firebase用 起来倒是简单:引用一个js即可,按官网上的教程很快便应用到了项目中.第二天打开项目发现推送功能不好使了,这是为何?最后发现firebase官网打 不开了...难道firebase被google收了也会被天朝给墙掉?也许

Asp.net SignalR 实现服务端消息推送到Web端

原文:http://www.cnblogs.com/wintersun/p/4148223.html 之前的文章介绍过Asp.net SignalR,  ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.  今天我们来实现服务端消息推送到Web端,   首先回顾一下它抽象层次图是这样的: 实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加简单. 为了获取更好的可伸缩性, 我们引入消息队列, 看如下

[android] 安卓消息推送的几种实现方式

消息推送的目的:让服务器端及时的通知客户端 实现方案 轮询:客户端每隔一定的时间向服务器端发起请求,获得最新的消息 特点:如果用在最新新闻通知上,效率就有点低了,技术简单,好实现 应用场景:服务器端以一定的频率更新时,如:股票行情,就比较适用轮询了 当你把手机应用的聊天打开,过了一会发烫,基本就是轮询实现的 发短信:服务端发送短信,客户端对短信进行解析 特点:最及时,费用高 应用场景:土豪公司,没联网也可以收到信息 使用第三方的开源项目: androidPN (android push noti

长轮询实现消息推送

一.应用场景 浏览器与服务器之间保持一个长连接(http链接),服务器有最新的数据生成时及时推送到前端展现.典型场景:新邮件到达通知. 二.业界常用的解决方案 定时轮询,长轮询,websocket(HTML5新增的能力) 其中长轮询兼容性较好,应用的较为广泛,但是切忌在移动网络中应用该技术. 三.长连接前端代码 /** *pns模型层 *@constructs M2012.Model.Pns.PnsModel *@extends Backbone.Model *@example *new M20

ASP.NET 微信公众平台模板消息推送功能完整开发

最近公众平台的用户提出了新需求,他们希望当收到新的邮件或者日程的时候,公众平台能主动推送一条提醒给用户.看了看平台提供的接口,似乎只有[模板消息]能尽量满足这一需求,但不得不说微信提供的实例太少,而且只有PHP的,不过摸索了一下还是成功的实现了. 首先是准备工作,需要申请开通[模板消息]功能,网上教程很多.然后申请通过之后,用户可以从现有的模板里选择15个使用,也可以自己添加模板使用.这里吐槽一下:申请添加新的模板时,微信出于保护用户的目的禁止了一些“看起来会很频繁”的消息类型,比如这图里的——