Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Chat Konzept mit Adminanwendung. Wie die Clients verwalten.. (https://www.delphipraxis.net/112845-chat-konzept-mit-adminanwendung-wie-die-clients-verwalten.html)

Thomas83 28. Apr 2008 10:37


Chat Konzept mit Adminanwendung. Wie die Clients verwalten..
 
moin,

bei uns in der Firma nutzen wir ein Chatsystem welches wir selber programmiert haben.
Es gibt einen Server wo sich alle Clients anmelden. Die Clients werden in einem Array verwaltet.
Jetzt soll es noch eine Adminanwendung geben die kontrolliert wer Online ist, was geschrieben wird etc.

Die Admin Anwendung soll nur beobachten.

Wie würdet ihr das machen.
In der Adminanwendung alle Clients auch noch mal verwalten, heist also im Array verwalten.
Oder nur der Adminanwendung eine Nachricht schicken neuer Client ist Online.

shmia 28. Apr 2008 10:53

Re: Chat Konzept mit Adminanwendung. Wie die Clients verwalt
 
Eine Liste, also eine Klasse von TList oder TObjectList abgeleitet wäre besser geeignet als das Array.
Grund: bei einem Array entsteht ein Loch wenn sich ein User abmeldet. Dieses Loch muss mühsam wieder durch Verschiebungen im Array gefüllt werden.
Bei einer Liste gibt es dieses Problem nicht.

----
Die Adminanwendung sollte im Prinzip ein normaler Client sein, der aber Adminrechte hat.
Es ist effektiver, nur zwei Programme (Server und Client) als 3 Programme zu pflegen.

Deine Adminanwendung braucht ein Kommando (GET_ALL_ACTIVE_USERS), mit dem es alle User vom Server abrufen kann.
Wenn der Server erkennt, dass ein (oder mehrere) Client mit Adminrechten angemeldet sind, dann schickt er diesen eine USER_CHANGED Benachrichtigung. Und zwar immer dann, wenn sich ein User an- oder abmeldet.
Die Clientanwendung reagiert darauf, in dem sie alle Benutzer erneut vom Server abruft.

Thomas83 28. Apr 2008 11:30

Re: Chat Konzept mit Adminanwendung. Wie die Clients verwalt
 
so habe ich es mir auch gedacht, das der Server bei jeder Änderung (Online/Offline) sich die Liste vom Server erneut abruft.

Wenn jetzt aber bei ca. 200 Mitarbeiter sich jeder anmeldet / abmeldet ist der Server ja nur noch beschäftigt sich die Userliste zu ziehen!?

Eine Möglichkeit wäre es noch wenn sich ein Client anmeldet wird dieser in der Userliste auf dem Server abgelegt. Der Server sendet dem Admin "Neuer Client". Der Admin legt auch eine Liste mit Clients an und löscht oder fügt die Clients hinzu.

xZise 28. Apr 2008 12:40

Re: Chat Konzept mit Adminanwendung. Wie die Clients verwalt
 
Das könnte man umgehen, indem man nicht mit absuluten Werten arbeitet, sondern relativ:
D.h., wenn sich Benutzer "<Benutzername hier einsetzten>" abmeldet, dann wird der Benutzername an den Client geschickt, welcher dann den aus der Liste löscht.

Dabei besteht dann aber die Gefahr von Inkonsensitenz.
Verzögern könnte man das, indem man mitschickt, wie viele Benutzer angemeldet sind.
Weicht die Zahl ab (d.h. beim Adminprogramm fehlt einer oder ist noch einer drinnen), dann die Namen neuladen.

Wenn du sowieso dabei bist, könntest du auch bei jedem Benutzer speichern, seit wann gesichert ist, dass der Benutzer dabei ist.
Und wenn die Zeit z.b. eine Minute vorbei ist, fragst du den Server ob Benutzer "x" online ist, welcher dann zurückschickt, "ja" oder "nein". Wenn nein, dann die ganze Liste neuladen. (Sicherheitshalber)
Auch könntest du wieder eine "Quersumme" mitschicken (also die Anzahl der Benutzer).

Das Problem ist nur, dass der Nutzen nachher nicht mehr so viel bringt.
Wenn du möchtest könntest du auch zusätzlich einen Befehl einbauen, welcher den Server auffordert die Liste nocheinmal zu senden.

MfG
xZise

Thomas83 28. Apr 2008 12:56

Re: Chat Konzept mit Adminanwendung. Wie die Clients verwalt
 
das hört sich nicht schlecht an. Nur dann muss auf dem Server und in der Admin Anwendung eine Liste mit allen Clients geführt werden. Aber naja komme ich wohl nicht drum rum.....

xZise 28. Apr 2008 14:45

Re: Chat Konzept mit Adminanwendung. Wie die Clients verwalt
 
Naja ;) So viel ist das nicht :)
Sagen wir, wir haben 200 Namen mit jeweils 20 Zeichen. Heißt 40 KILOByte Ram zusätzlich.
Durch die Liste etc. wird das mehr, aber es hält sich in Grenzen ;)

MfG
xZise

Thomas83 28. Apr 2008 15:19

Re: Chat Konzept mit Adminanwendung. Wie die Clients verwalt
 
Dann werde ich es so machen das ich Server und in der Adminanwendung die Clients in einer Liste verwalte.....


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz