Frage

ich auf eine Chat-Anwendung arbeite und ich einfache Ajax-Abfrage wurde mit der neuen Chat abzurufen, aber seine gute Arbeit, weil es einige xmlHttp Anfrage sind Online-Status zu überprüfen und im Chat auf andere, und einige aus anderen Gründen zu schicken, so ich denke, es gibt viele Anfrage in meiner Form das ist, warum es nicht so funktioniert jetzt will ich diese Dinge im Comet-Stil tun. so wenden Sie sich bitte mir darüber sagen, wie zu tun ist.

Dies ist Sever Seite Code

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

und auf Client-Seite war ich eine Auszeit überprüfen kontinuierlich eingestellt.

War es hilfreich?

Lösung

Sie verstehen, was Comet ist, nicht wahr? Es bedeutet, die HTTP-Verbindung in einem hängenden Zustand verlassen (als ob der Download angehalten), bis der Server etwas Interessantes zu sagen, dem Kunden hat.

Der Kunde würde kein Timeout hat. Es wäre einfach wieder anfordern, wenn der aktuelle Download beendet ist.

Timeouts möglicherweise auf dem Server auftreten, zu versuchen, das Netzwerk-Timeouts vorgreifen, die in Hardware auf dem Weg vom Server zum Client (Proxys usw.) auftreten konnten.

einen Comet-Server zu schreiben, ist keine triviale Aufgabe. Es scheint, Sie brauchen ein besseres Verständnis für die Konzepte, bevor sie auf einem solchen gefährlichen Abenteuer einsteigen.

Andere Tipps

Ich kann nicht wirklich eine gute Antwort auf Ihre Frage geben, weil der Code, den Sie bisher aufgenommen haben nicht klar, Hintergrund dessen, was der Server tut. Comet ist schön, aber es ist kein Allheilmittel, und wie bereits erwähnt, gibt es einige Konzepte, die Sie brauchen, um zu verstehen, um erfolgreich zu implementieren.

Ich empfehle, dass Sie mit der Seite Lebenszyklus einer asp.net Seite vertraut sein, wie das Lebenszyklus in Ihrem Client-Request-Objekt dargestellt wird (lesen xmlhttprequest.readystate,) und wie Sie Ihren Server.

Soweit, was Code, den Sie aufgenommen haben, in meiner Erfahrung, ruft Response.End () oder ein Ende der Funktion schließt die Reaktion, die nicht unbedingt das, was Sie wollen passieren.

In einem benutzerdefinierten Server, die wir verwenden, verwende ich ein Ereignis warten Griff zu signalisieren und für die Benutzereingabe vom Client warten. Ich muss auch sicherstellen, dass, wenn der Benutzer viele Anfragen sendet, die die Daten entweder verpackt und auf dem Server korrekt behandelt, oder dass diese Anforderungen nicht blockieren den Ansichtszustand Faden (die die Ausgabe an den Client Griffe zurück. )

Ich glaube, dass die geringste Menge an Komplexität erreicht, wenn Sie nur zwei Anfragen verwenden. (Ich glaube, das ist auch pro-Spezifikation, aber ich kann nicht scheinen, atm zu finden.)

Für eine gute lesen, überprüfen Comet und Reverse-Ajax (erhältlich über apress)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top