Frage

Wird dieser Chat "lange Umfragen" oder "HTTP -Streaming" verwendet?

http://go-mono.com/moonlight/chat.aspx

War es hilfreich?

Lösung

Es ist nichts so Einfaches. Es verwendet http://www.mibbit.com/chat, das ist ein voller IRC -Client, der in JavaScript und Java geschrieben wurde. Blog at http://blog.mibbit.com/.

Bearbeiten: Hier ist deine Antwort.

Der erste Teil, an dem ich gearbeitet habe, war die Kommunikation zwischen Browser und Server. Das ist mit 2 XMLHTTPrequests durchgeführt. Der erste besteht einfach darin, Daten vom Browser an den Server zu senden. Es verwendet Keep-Alive, um neue Verbindungen zu minimieren.

Das zweite XHR ist der "Empfang faulen Umfragen". Es stellt eine Verbindung zum Server her, und der Server hält es offen, bis Nachrichten verfügbar sind oder eine Zeitüberschreitung abläuft. Dieser ist ebenfalls aufbewahrt, sodass die nächste Anfrage die gleiche Verbindung abfällt.

Was Sie am Ende haben, sind 2 Verbindungen, die für den Server geöffnet sind, mit Paketen (in diesem Fall JSON) und einige HTTP -Header von Zeit zu Zeit. Um sicherzustellen, dass der Server skaliert wird, habe ich mit NIO einen benutzerdefinierten Webserver in Java geschrieben. Es behandelt alle Verbindungen in einem einzelnen Faden und setzt, wie ich sage, zu Zehntausenden von Verbindungen.

Wenn der Client eine neue Verbindung anfordert, sendet er eine Anforderung an den Webserver, der dann eine Verbindung herstellt und Proxying usw. startet. Es wird auch bei IRC -Verbindungen einen Identitätsserver ausgeführt, sodass ein IRC -Server einzelne Browser identifizieren kann. Ich habe mir vorhandene Frameworks usw. angesehen, um so etwas zu tun, aber ich habe gelernt, wie alles funktioniert, und dachte, dass mein Anwendungsfall spezifisch genug ist, um mehr zu optimieren, als allgemeine Frameworks können.

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