0

我必须在我的 asp.net 网站中实现 gmail 风格的聊天。现在我知道这里和其他论坛在这方面已经说了很多……关于彗星及其好处……

我最近看到了这个网站 www.indyarocks.com,当我分析他们的网站时,我发现他们会发送一个异步请求来聊天,并且页面会一直等待,直到服务器有一些数据要返回,并且只有在页面返回之后......(我的意思是它显示状态 200 OK)并再次发送请求。

我已经在我的网站中实现了聊天,我在 5 秒后轮询数据库以获取任何新的聊天...所以我想知道我是否使用 ASP.NET AJAX 向 Web 方法发送请求并继续在服务器上循环直到它有一些数据要返回,然后返回到调用它的网页,这是一个好方法,如果不是,它的缺点是什么????

我可以使用的代码

<WebMethod(EnableSession:=True)> _
    Public Function looper(ByVal x As String) As String
        Dim flag As Boolean = False
        While (flag = False)
            Dim ans As String = getScalar("select 1 from Chat where sent_by=1")
            If Not ans Is Nothing Then
                flag = True
            End If
        End While
        Return "x"
    End Function

在这里我可以遍历服务器,直到它有一些数据

无论如何它比轮询方法更好????

有没有人有改进这种方法的建议???

4

1 回答 1

0

它比客户端的轮询方法更好

为什么,因为

  • 它避免了服务器往返 - 节省了大量时间
  • 并避免对服务器的不必要调用(即使数据不可用,轮询方法也会调用 web 方法)

另一方面,您当前的 COMET 方法,服务器调用来自 javascript,因为只有在服务器返回更新的数据时才从客户端发出新请求。

所以跟上当前的设计

于 2010-02-22T13:10:24.593 回答