2009-09-14 66 views
0

我正在聊天应用程序,我使用简单的ajax轮询来检索新的聊天,但它的工作良好,因为有几个xmlHttp请求来检查在线状态并发送和别人聊天,还有其他的原因,所以我认为我的表单中有很多要求,这就是为什么它不工作,所以现在我想用Comet风格做这些事情。所以请告诉我该怎么做。什么代码应该是服务器端的彗星应用程序

这是服务器端代码

Dim output As String = JavaScriptConvert.SerializeObject(newChat)    
        Response.Flush() 
        Response.Clear() 
        Response.Write(output) 
        Response.End() 

,并在客户端侧I设定一个时间来连续地检查。

回答

0

你明白彗星是什么,对吧?这意味着要让http连接处于挂起状态(就好像下载已停止),直到服务器有一些有趣的事情可以告诉客户端。

客户端不会有超时。如果当前下载结束,它会再次请求。

服务器上可能会出现超时,以尝试抢先于服务器到客户端(代理等)路由上的硬件中可能发生的网络超时。

写彗星服务器不是一件小事。看起来你需要在开始这样一个危险的冒险之前更好地理解这些概念。

0

对于您的问题,我无法给出很好的回答,因为您目前包含的代码对于您的服务器在做什么的背景并不清楚。彗星很好,但它不是灵丹妙药,正如前面提到的,有一些概念需要你理解才能成功实现。

我建议您非常熟悉一个asp.net页面的页面生命周期,该生命周期在客户端的请求对象中的表示方式(请参阅xmlhttprequest.readystate)以及您的服务器。

就我的经验来说,根据我的经验,调用Response.End()或者结束函数会关闭响应,这不一定是您想要发生的。

在我们使用的自定义服务器中,我使用事件等待句柄来发信号并等待来自客户端的用户输入。我还必须确保,如果用户正在发送大量的数据要么被正确打包并在服务器上处理的请求,要么这些请求不会阻止视图状态线程(它将输出处理回客户端)。 )

我相信,只使用两个请求就可以达到最少的复杂度。 (我相信这也是每个规范,但我似乎无法找到它atm。)

为了一个很好的阅读,检查彗星和反向Ajax(可通过apress)

相关问题