HWR-Chat: Server / Server
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
Aus It2010-g1
Admin (Diskussion | Beiträge) K (1 Version: Eine alte Version der Wiki ist hier her gezogen (3)) |
Bepf (Diskussion | Beiträge) |
||
Zeile 22: | Zeile 22: | ||
Wenn erfolgreich zum Server verbunden wurde, wird ein neuer Client-Thread eröffnet. Dieser Client Thread kann nun Java-Objekte auf dieser Verbindung empfangen (Auswertungslogik). | Wenn erfolgreich zum Server verbunden wurde, wird ein neuer Client-Thread eröffnet. Dieser Client Thread kann nun Java-Objekte auf dieser Verbindung empfangen (Auswertungslogik). | ||
Wird ein Anmeldung erfolgreich durchgeführt(Benutzername/Passwort richtig, nicht eingeloggt), wird dieser Client in eine Liste von Online Benutzern eingereiht. Soll nun ein ganz bestimmter Client angesprochen werrden (z.B. eine Textmessage soll an diesen Client versand werden) kann diese Liste dazu benutzt werden das NachrichtenObjekt an diesen Clienten zu leiten. Die Liste weiß zu jeder Zeit welcher Client über welche Verbindung verbunden ist. | Wird ein Anmeldung erfolgreich durchgeführt(Benutzername/Passwort richtig, nicht eingeloggt), wird dieser Client in eine Liste von Online Benutzern eingereiht. Soll nun ein ganz bestimmter Client angesprochen werrden (z.B. eine Textmessage soll an diesen Client versand werden) kann diese Liste dazu benutzt werden das NachrichtenObjekt an diesen Clienten zu leiten. Die Liste weiß zu jeder Zeit welcher Client über welche Verbindung verbunden ist. | ||
+ | |||
+ | ==Auswertungslogik== | ||
+ | |||
+ | Der Server empfängt generell nur AMessage Objekte. In einer Routine werden ankommende Objekte auf ihre echte Instanz hin überprüft (in Java mit instanceof). Je nach ObjektTyp werden nun andere Aktionen ausgeführt. Es werden entweder nur interne Daten geändert, Nachrichten weitergeleitet, oder auch beides. | ||
+ | |||
+ | ==Was passiert bei welchen Nachrichten?== | ||
+ | Der Server empfängt eine Nachricht und diese ist vom Typ: | ||
+ | *Textmessage: Die Nachricht wird einfach an den Empfänger weitergeleitet, ist dieser nicht online wird die Nachricht in eine Offline-Message Verwaltung eingereiht. Eine Textmessage kann auch an eine Gruppe gerichtet sein, die entsprechenden User werden vorher rausgesucht. | ||
+ | *LoginRequest: Die Parameter aus der Nachricht werden abgegelichen mit den aktuellen User-Daten, sollte das Password nicht stimmen, der Nutzername falsch sein, oder die Person bereits online sein, wird die LoginRequestMessage mit einer Fehlermeldung bestückt und wieder zurück geschickt. Ist alles korrekt wird der Benutzer am Server registriert, und dem ClientHandling-System hinzugefügt (Welcher Benutzer ist Online, Welcher Benutzer ist auf welcher Verbindung verbunden. Dannach wird die LoginRequestMessage zurückgesand mit dem aktuellen User-Objekt als Attribut. Sollten offline Messages anstehen, werden diese nacheinander verschickt. Als letzten Schritt werden alle Freunde des neu angemeldeten Clients über eine Nachricht darüber verständigt, dass der Benutzer nun Online ist. | ||
+ | *RequestMessages (DateiVersandRequest, Freundschaftsrequest): Bei bestimmten Anfragen wird auch eine Rückantwort bzw. Bestätigung benötigt. Über Attribute (die der Client setzt) werden diese Zustände erkannt und bearbeitet. Bei einer Freundschaftsanfrage werden bei einem angenommenen Zustand die Benutzerbeziehungen in die Datenbank eingetragen, bei der Dateiversandsanfrage werden die benötigten Verbinungsdaten eingetragen(Ip-Adresse) | ||
+ | |||
+ | ...Es gibt noch mehr Messages, die nach ähnlichen Prinzipien ausgewertet werden. Die obere Übersicht soll nur das Prinzip verdeutlichen. |