在Asp.net下实现变长连接的web即时应用的实现范例及ReverseAjax的演示介绍
程序员文章站
2024-03-07 13:53:09
reverseajax 反转ajax是一种旨在将逻辑控制权转移到服务端的web实现模式 何谓控制权转移 传统的ajax调用一般由客户端行为触发,比如说获取区域数据,异步...
reverseajax 反转ajax是一种旨在将逻辑控制权转移到服务端的web实现模式
何谓控制权转移
传统的ajax调用一般由客户端行为触发,比如说获取区域数据,异步验证等。
reverseajax将控制权转交给服务端,就像服务端触发客户端事件一样,即很早的web推的技术。
asp.net实现变长连接需要使用到异步页面的技术,同时该页面需要禁用会话来实现每次请求都产生一个新的实例执行。
<%@ page language="c#" autoeventwireup="true" codefile="response.aspx.cs" inherits="_default" async="true" asynctimeout="30" enablesessionstate="false"%>
if (request.form.count>0)
{
if (request.form["type"] == "loop")
{
chattask task = new chattask(this.context);
task._chatnow = this.chatnow;//有新的消息的回调方法,即为通知处理,这个时候释放掉连接
string user = request.form["user"].trim();
pageasynctask async = new pageasynctask(new begineventhandler(task.onbegin), new endeventhandler(task.onend), new endeventhandler(task.ontimeout), user);
page.registerasynctask(async);
page.executeregisteredasynctasks();//异步执行
}
}
具体代码和实现效果请参见范例。
附件:
范例程序: reverseajaxchat范例.rar
何谓控制权转移
传统的ajax调用一般由客户端行为触发,比如说获取区域数据,异步验证等。
reverseajax将控制权转交给服务端,就像服务端触发客户端事件一样,即很早的web推的技术。
asp.net实现变长连接需要使用到异步页面的技术,同时该页面需要禁用会话来实现每次请求都产生一个新的实例执行。
复制代码 代码如下:
<%@ page language="c#" autoeventwireup="true" codefile="response.aspx.cs" inherits="_default" async="true" asynctimeout="30" enablesessionstate="false"%>
if (request.form.count>0)
{
if (request.form["type"] == "loop")
{
chattask task = new chattask(this.context);
task._chatnow = this.chatnow;//有新的消息的回调方法,即为通知处理,这个时候释放掉连接
string user = request.form["user"].trim();
pageasynctask async = new pageasynctask(new begineventhandler(task.onbegin), new endeventhandler(task.onend), new endeventhandler(task.ontimeout), user);
page.registerasynctask(async);
page.executeregisteredasynctasks();//异步执行
}
}
具体代码和实现效果请参见范例。
附件:
范例程序: reverseajaxchat范例.rar