使用IHttpAsyncHandler实现长连接,当http请求增加时,连接非常慢,求解决

问题描述

代码片段:前端js代码///<referencepath="jquery-1.3.2.min.js">$(document).ready(function(){functionsend(){//向comet_broadcast.asyn发送请求,消息体为文本框content中的内容,请求接收类为AsnyHandler$.post("comet_broadcast.asyn",{content:$("#content").val()});//清空内容//$("#content").val("");}functionwait(){$.post("comet_broadcast.asyn",{content:"-1"},function(data,status){varresult=$("#divResult");result.html(result.html()+"<br/>"+data);//服务器返回消息,再次立连接wait();},"html");}//初始化连接wait();$("#btnSend").click(function(){send();});$("#content").keypress(function(event){if(event.keyCode==13){send();}});});

服务端代码:publicclassAsnyHandler:IHttpAsyncHandler{publicAsnyHandler(){}publicIAsyncResultBeginProcessRequest(HttpContextcontext,AsyncCallbackcb,objectextraData){//myAsynResult为实现了IAsyncResult接口的类,当不调用cb的回调函数时,该请求不会返回到给客户端,会一直处于连接状态myAsynResultasyncResult=newmyAsynResult(context,cb,extraData);asyncResult.ClientID=context.Request.UserHostAddress;Stringcontent=context.Request.Params["content"];//向Message类中添加该消息Messages.Instance().AddMessage(asyncResult.ClientID,content,asyncResult);returnasyncResult;}#region不必理会publicvoidEndProcessRequest(IAsyncResultresult){}publicboolIsReusable{get{returnfalse;;}}publicvoidProcessRequest(HttpContextcontext){}#endregion}

配置文件:<addverb="GET,POST"path="comet_broadcast.asyn"type="IHttpAsyncHandlerCS.Base.AsnyHandler,IHttpAsyncHandlerCS"/>publicclassmyAsynResult:IAsyncResult{bool_IsCompleted=false;privateHttpContextcontext;privateAsyncCallbackcb;privateobjectextraData;publicstringClientID{get;set;}publicmyAsynResult(HttpContextcontext,AsyncCallbackcb,objectextraData){this.context=context;this.cb=cb;this.extraData=extraData;}privatestring_content;publicstringContent{get{return_content;}set{_content=value;}}#regionIAsyncResult接口publicobjectAsyncState{get{returnnull;}}publicSystem.Threading.WaitHandleAsyncWaitHandle{get{returnnull;}}publicboolCompletedSynchronously{get{returnfalse;}}publicboolIsCompleted{get{return_IsCompleted;}}#endregion//在Message类中的添加消息方法中,调用该方法,将消息输入到客户端,从而实现广播的功能publicvoidSend(objectdata){context.Response.Write(this.Content);if(cb!=null){cb(this);}_IsCompleted=true;;}}

当打开多个页面进行长连接通信时(超过10页),页面响应非常慢,并收不到发送的信息。望大神解决。

解决方案

解决方案二:
给我的感觉就是一般的长连接都非常消耗系统资源,如果做个简简单单的视频通信或者简单的聊天什么的都可以用socket或者flex。网上许多例子。
解决方案三:
楼主你好,我用了和你一样的方法来实现长连接,但是为什么同时只有一个页面的请求有效,如果打开第二个页面,之前的长连接就断开了,望请指教。

时间: 2024-07-30 17:17:50

使用IHttpAsyncHandler实现长连接,当http请求增加时,连接非常慢,求解决的相关文章

vb datagridview已连接access后遇到的存储问题,求解决~

问题描述 在使用vs2013-vb窗体应用编写某列表的时候.用到datagridview控件,现已将datagridview链接access数据库,且可建立正常操作.遇到的问题是,在datagridview控件上已显示添加了的项目没有同步到access数据库中.现想在关闭窗体时,将当前的信息保存到access(mdb)中,应该怎样做?可能没说清楚哈,就是在每次关闭窗体之后,加入数据库的东西并没有保存,重新启动程序,数据库又是空白.我在添加到数据库的操作代码是:PlaylistDataSet.表1

dhcp-配置第二个DHCP后,其连接的主机请求IP失败,不知何因

问题描述 配置第二个DHCP后,其连接的主机请求IP失败,不知何因 如图,实验环境为 CISCO PT 5.3 本来是做RIPv2实验的,已完成.为2台PC配置IP,可以互ping通. 我心血来潮,想让路由下面的主机配置为自动获取IP.在router1添加: ip dhcp pool 1 network 172.16.3.0 255.255.255.0 没设置默认网关,然后直接在PC0直接动态获取IP,该步骤成功了.获取的IP是172.16.3.2 然后我在router2同样这样操作,添加: i

方法-关于请求连接一般处理程序出错的一个问题,求大神指教。

问题描述 关于请求连接一般处理程序出错的一个问题,求大神指教. 同一个方法,为什么上图的可以连接,下图就不行呢?急死了. 解决方案 两个链接不一样,你确认下面那个正确吗 解决方案二: 500错误,说明你方法有问题罗,如配置不对什么的,你去看下xhr返回什么内容不就好了,根据返回内容看什么错误修正来

谷歌HTTPS透明度报告:逾75%服务器请求使用加密连接

谷歌公布HTTPS加密连接的部署情况 北京时间3月16日消息,据科技博客TechCrunch报道,谷歌周二在其透明度报告中增加了一个新板块--超文本传输安全协议(HTTPS)的实施情况,专注于介绍谷歌自主网站和各大热门网站的加密部署情况. 谷歌称,在发送到公司服务器的请求中,超过75%使用了加密连接.不过,该报告并不包含YouTube流量. 逾75%服务器请求使用加密连接 在谷歌所有产品中,Gmail和云端硬盘在HTTPS部署上遥遥领先,这两款服务现在默认使用HTTPS连接.地图和广告产品等使用

HttpClient连接池原理及一次连接时序图

1.       httpClient介绍 HttpClient是一个实现了http协议的开源Java客户端工具库,可以通过程序发送http请求.   1.1.  HttpClient发送请求和接收响应 1.1.1.      代码示例 以Get请求为例,以下代码获得google主页内容并将返回结果打印出来. public final static void main(String[] args) throws Exception {           HttpClient httpclien

certificate-easyconnect连接不上,显示网络连接错误

问题描述 easyconnect连接不上,显示网络连接错误 easyconnect输入服务器地址后初始化时间很长,然后显示下载控件,但下载失败,说检查网络是否连接,但我连的是WiFi,能上网. 解决方案 http://iask.sina.com.cn/b/4T3nYLVHw.html

webservice调用失败:基础连接已经关闭,接受时发生错误

问题描述 c#写的webservice,提供接口函数A,此函数后台调用c++写的dll读取服务器上的文件,当文件比较大时,该函数比较耗时,发现当耗时大概达到10秒时,程序就会报"基础连接已经关闭,接受时发生错误".服务器是阿里云(winserver2008,64位),iis7.5.请问是什么原因? 解决方案 解决方案二:超时了????解决方案三:web.config中加入或者修改<httpRuntimeexecutionTimeout="number(inseconds

azure-storage table连接后,需要随时释放连接吗?

问题描述 storage table连接后,需要随时释放连接吗? HELLO!!! 向各位大神问个问题:storage table连接后,需要随时释放连接吗?还是使用static 方法供项目里所有的地方调用? 求解答!!!! 解决方案 您好, 不需要随时释放链接.你可以使用一个静态方法在你所有的项目中调用. 无论您使用的是.net SDK或者是REST API,客户端都是向服务器端发送请求,客户端接收到请求后,这个链接状态就结束了,如果还想继续与服务器端交互,需要重新发送请求. Regards,

数据-echarts地图怎么用,这个是静态的,怎么与后台连接写成动态的,麻烦有用过的解决一下

问题描述 echarts地图怎么用,这个是静态的,怎么与后台连接写成动态的,麻烦有用过的解决一下 <script type="text/javascript"> option = { title : { text: '地区分布统计注册量', subtext: '2015年度', x:'center' }, tooltip : { //tooltip提示框,鼠标悬浮交互时的信息提示 trigger: 'item' //触发类型,默认数据触发,见下图,可选为:'item' |