我正在开发一个聊天应用程序,我正在使用简单的ajax轮询来检索新的聊天,但它的工作正常,因为有更多的xmlHttp请求来检查在线状态并将聊天发送给其他人和其他一些原因,所以我认为我的表格中有很多要求说明为什么它不起作用所以现在我想用Comet风格做这些事情。所以请告诉我该怎么做。
这是服务器端代码
Dim output As String = JavaScriptConvert.SerializeObject(newChat)
Response.Flush()
Response.Clear()
Response.Write(output)
Response.End()
在客户端,我有时间不断检查。
答案 0 :(得分:0)
你明白Comet是什么,对吗?这意味着将http连接保持挂起状态(好像下载已经停止),直到服务器有一些有趣的东西告诉客户端。
客户端不会超时。如果当前下载结束,它只会再次请求。
服务器上可能会发生超时,试图抢占从服务器到客户端(代理等)的路由中硬件中可能发生的网络超时。
编写Comet服务器并非易事。在开始这样一次危险的冒险之前,你似乎需要更好地理解这些概念。
答案 1 :(得分:0)
我无法对您的问题做出很好的回应,因为到目前为止您所包含的代码并不清楚您的服务器正在做什么的背景。彗星很好,但它不是灵丹妙药,如前所述,为了成功实施,你需要了解一些概念。
我建议您非常熟悉asp.net页面的页面生命周期,如何在客户端的请求对象(读取xmlhttprequest.readystate)以及服务器的方式中表示生命周期。
根据我的经验,根据我的经验,调用Response.End()或者函数结束会关闭响应,这不一定是你想要发生的。
在我们使用的自定义服务器中,我使用事件等待句柄发出信号并等待来自客户端的用户输入。我还必须确保如果用户发送了大量请求,要求数据在服务器上正确打包和处理,或者这些请求不会阻止视图状态线程(将输出处理回客户端)。 )
我相信,当您只使用两个请求时,实现的复杂性最小。 (我相信这也符合规范,但我似乎无法找到它。)
要获得良好的阅读效果,请查看Comet和Reverse Ajax(可通过apress获取)