关于使用comet长连接的问题
我在网上下载类似《asp.net comet实例》的例子进行修改之后,在自己的网站上能够实现我需要的功能(类似股票的实现价格变动)。
该页面aspx加载之后,通过jquery的ajax方法与服务器建立长链接。服务器上使用了一个System.Threading.Timer实现每5分钟就踢掉所有链接(返回空字符串),而客户端收到空字符串时也重新连接。
但现在有几个问题无法解决:
一:打开带有长连接的页面时,在IE、Chrome等浏览器上正常,但用Safari时,则它的地址栏加载进度条一直处于页面未完全加载的状态,看起来很不爽。
二:如果是使用iPad来打开该页面,则最多只能打开两个页面(这两个页面都处于未加载完毕的状态),导致此时iPad的浏览器无法打开其它页面(看起来好像是堵死了)在这里如果关闭带有长连接的两个页面的其中一个,则其它页面立即加载完毕。
三:最要命的是:当服务器有几十个连接时,这些带有长连接的页面就会出错,进而整个网站慢到几近无法访问。注:服务器是自己的,Windows2003+SQL2008, .net3.5。服务器宽带绝对够!而且通过服务器上出错的日志我也无法知道是哪出错了。
出错信息如下:
异常信息:
异常类型: NullReferenceException
异常消息:
未将对象引用设置到对象的实例。
线程信息:
线程 ID: 5
线程帐户名: NT AUTHORITY\NETWORK SERVICE
是否正在模拟: True
堆栈跟踪: 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
烦请精通comet长连接的高手帮忙,万分感谢。
------解决方案--------------------不知道。不知道。