Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]281[/thread]

chatfunktion: theorie



<< >> 8 entries, 1 page
steinwolf
 2004-06-05 21:43
#2691 #2691
User since
2003-08-04
367 articles
BenutzerIn
[default_avatar]
Eins vorweg, die übliche Diskussion Client-Pull oder Client-Push will ich nicht anreissen. Nein, meine Frage ist, wie verteile ich die neuen Nachrichten auf die User?

Ich könnte für jeden User eine temporäre txt-file anlegen (oder datenbankseitig, ist im prinzip egal, ich wills nur theoretisch wissen) und sobald eine neue Nachricht kommt, würde diese entsprechend verarbeitet, müsste aber bei jedem User in sein File geschrieben werden, damit er die aktuelle Nachricht bekommt.

Ist das die Standardlösung? Kann ich mir nicht vorstellen, ist ja viel zu umständlich. Vielleicht könnt ichs auch in einer Datei mit Timestamps lösen.

Wie wird sowas gehandled?

mfg steinigen..
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
coax
 2004-06-05 21:50
#2692 #2692
User since
2003-08-11
457 articles
BenutzerIn
[default_avatar]
In einen Chatraum sehen doch alle den gleichen Text also wieso fuer jeden User eine eigene Datei und nicht eine fuer alle ?
,,Das perlt aber heute wieder...'' -- Dittsche
steinwolf
 2004-06-05 21:55
#2693 #2693
User since
2003-08-04
367 articles
BenutzerIn
[default_avatar]
Hmm, ich denke nicht, dass das geht.
Es darf ja immer nur der neuste Eintrag an den User geschickt werden. Ich will nicht jedesmal die ganze Datei schicken..\n\n

<!--EDIT|steinwolf|1086458227-->
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
coax
 2004-06-05 22:01
#2694 #2694
User since
2003-08-11
457 articles
BenutzerIn
[default_avatar]
Was sollte dich daran hindern ?

Grundsaetzlich geht das, das einzige was daran stoeren koennte ist, dass User die den Chat neu betreten auch den alten Text mit lesen koennen.
Da kannst dir aber nun auch etwas einfallen lassen.
Zum Beispiel koenntest du nur die Nachrichten seit seinen Eintritt an den jeweiligen User ausgeben.
Oder eben deine Mehrere-Dateien-Methode, was aber zur Folge hat, dass du eine Menge mehr Speicher verbrauchst.
,,Das perlt aber heute wieder...'' -- Dittsche
steinwolf
 2004-06-05 22:25
#2695 #2695
User since
2003-08-04
367 articles
BenutzerIn
[default_avatar]
Dann wird die Datei aber immer größer, und ich muss immer gewaltigere Datenmengen übertragen
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
coax
 2004-06-05 22:32
#2696 #2696
User since
2003-08-11
457 articles
BenutzerIn
[default_avatar]
Du liest einfach immer nur (zum Bsp.) letzten 59 Zeilen der Datei aus, haengst die neue hinten an und ueberschreibst die Datei wieder damit.
Den Client schickst dann immer nur die Zeilen zu die seit dem letzten Senden neu hinzugekommen sind (laut Timestamp).
,,Das perlt aber heute wieder...'' -- Dittsche
Strat
 2004-06-05 23:02
#2697 #2697
User since
2003-08-04
5246 articles
ModeratorIn
[Homepage] [default_avatar]
ich wuerde da fuer jeden user eine queue erstellen (entweder in DB oder als pipe oder datei), denn so kann man verschiedene chatraeume und private nachrichten einfacher handeln... und die gesendeten nachrichten kann man ja nach dem senden loeschen (oder die letzten paar immer noch vorraetig halten, falls der user mal aus dem chat rausfliegt)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
guest Gast
 2004-06-06 17:29
#2698 #2698
Die Queue kann man ja sehr schön als Hash definieren; dabei die letzten 'n' Mitteilungen/Antworten festhalten, den Hash speichern falls kein offizelles LogOut, die (Hash) Datei löschen nach 'x' Minuten.
<< >> 8 entries, 1 page



View all threads created 2004-06-05 21:43.