Looping Web Method até que os dados sejam encontrados e retorne do serviço Web para aplicativo de bate -papo no ASP.NET
-
22-09-2019 - |
Pergunta
Eu tenho que implementar o bate -papo no estilo Gmail no meu site do ASP.NET. Agora eu sei que muito foi dito a esse respeito aqui e em outros fóruns ... Sobre o Cometa e seus convém ....
Recentemente, vi este site www.indyarocks.com e, quando perfisi o site deles, descobri que, para conversar, eles enviam uma solicitação assíncrona e a página aguarda até que o servidor tenha alguns dados para retornar e somente após a página retornar .... ( Quero dizer, ele mostra o status 200 ok) e novamente uma solicitação é despachada.
Eu implementei bate -papo no meu site em que eu pesquisei o banco de dados após 5 segundos para qualquer novo bate -papo ... Então, quero saber se enviar uma solicitação usando o ASP.NET AJAX para um método da Web e continue fazendo loop no servidor até Ele tem alguns dados para retornar e depois retornar à página da web que o chamou, é uma boa abordagem e, se não, quais são seus deméritos ????
o código que eu posso usar
<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
Aqui eu posso dar um loop sobre o servidor até que ele tenha alguns dados
De qualquer forma, é melhor do que o abordagem de votação????
Alguém tem sugestões para melhorar essa abordagem ???
Solução
É melhor do que a abordagem de pesquisa do lado do cliente
Por que, Porque
- Evita a tira -redonda do servidor - economiza muito tempo
- E evite chamadas não -neness para o servidor (a abordagem de pesquisa chama o webMethod, mesmo que os dados não estejam disponíveis)
Por outro lado, sua abordagem atual do cometa, as chamadas do servidor são mínimas do JavaScript, porque a nova solicitação será feita apenas do cliente se o servidor retornar os dados atualizados.
Portanto, continue com o design atual