ASP.NET 中长轮询的实现

作者:vkvi 来源:ITPOW(原创) 日期:2020-4-21

一、.aspx 的 @Page 指令上加上 Async="true"

比如:<%@ Page Async="true"%>

二、.aspx.cs 页面写类似如下代码

这里 new PageAsyncTask,使用的是 4 个参数的构造函数,使用 1 个参数那个时,它提示我要将 web.config 中的 httpRuntime 的 targetFramework 降为 4.5,我想算了,我还是用 4 个参数这种方法吧。

注意,上面是最多轮询 5 次,我改为 10,在本地、服务器测试时,都会把服务器卡得极慢。

三、Ajax 调用即可

流程是:

服务器每隔 1 秒去取数据,如果没有数据,就继续循环,为了防止客户端已经关闭还在傻傻地循环,这里作了个循环次数限定,而如果有数据,就输出客户端。

客户端拿到数据后,处理,然后继续去取。取数据期间,通过 F12 调试,会发现 Ajax 的页面,长时间处于 pending 状态。这和微信网页版的设计思路一致。

相关文章