Unterbrechung eines Streams feststellen (Chat-Logout)
Aquariophile
- perl
0 Gero Takke0 n.d. parker0 Aquariophile0 Mike
Grüß euch Gott liebe Leute !
Zuerst mal ein kräftigen "Guat g'mocht" !
Forum echt super, und der "Archivierungs-Button" ist ebenfalls ne gute Idee.
Bin echt erfreut dass in so kurzer Zeit wieder so viele Leute hier sind.
Frage in die Runde:
Störts wenn ich hier bin?
Also, ich hätte eine Perl -Frage:
Recht schwierig.
ALSO:
Und zwar habe ich das problem,
dass bei meinem Chat in Perl noch nicht in der Lage war,
eine gescheite Logout-Message hinzubekommen.
Klarerweise könnte ich einen simplen "Logout" Button machen,
aber ich geh mal davon aus dass mindestens 50% aller User den nicht klicken,
sondern einfach das Browser-Fenster schließen.
Trotzdem muss 'ne Logout-Message kommen.
Ursprünglich dachte ich an JS mit OnUnLoad,
aber ich will keinesfalls Javascript hernehmen,
weil dann kann das irgendso ein Browser vielleicht nicht oder was weiß ich und
dann geht das nicht und *bäh*
Lieber wär mir das Serverseitig.....
meine andere Idee war,
dass ich alle ... was weiß ich... 60 Sekunden....
überprüfe ob $user noch im Chat ist.
Aber das ist dann noch immer nicht das Idealste.....
ABER: *hehe*
Nun komm ich zu dem was ich will:
Ein Kollege sagte mir mal ich solle mich erkundigen wie das heißt,
wo UNIX angeblich irgendein Signal (pipe??) loslässt,
sobald von $user der Stream abreisst,
das kann das klicken des "stop" buttons am Browser sein,
genauso gut wie ein Browsersturz,
reissen der internet-conenction,
Egal_was_ sobald der Stream futsch ist kommt ein Signal und das kann ich _angeblich_ mit Perl auffangen.
Genauere Informationen zu diesem Ding wie auch immer es heißt
("pipe" mit Fragezeichen)
und wie ich es exakt verwenden soll.
Oder eventuell gibt es da noch bessere Methoden,
ich lass' mich einfach mal überaschen was ihr sagt.
ein kräftiges "Donkschen"
und einen netten Abend noch,
euer Aqua
Tach Aqua,
Frage in die Runde:
Störts wenn ich hier bin?
Nein, es stoert niemanden, dass du hier bist.
Und ich bin mir auch ziemlich sicher, dass du das weisst.
Ich bin immernoch der Meinung, dass ein Kick im Chat
noch lange kein Grund ist, sich dort nie wieder blicken
zu lassen - ich habe auch schon mehrere abbekommen
(Irgendjemand nocht nicht? Dann kommt doch so gegen 10 Morgens,
und holt ihn euch ab >:)
dass ich alle ... was weiß ich... 60 Sekunden....
überprüfe ob $user noch im Chat ist.
Aber das ist dann noch immer nicht das Idealste.....
Nun komm ich zu dem was ich will:
Ein Kollege sagte mir mal ich solle mich erkundigen wie das heißt,
wo UNIX angeblich irgendein Signal (pipe??) loslässt,
sobald von $user der Stream abreisst,
das kann das klicken des "stop" buttons am Browser sein,
genauso gut wie ein Browsersturz,
reissen der internet-conenction,
Egal_was_ sobald der Stream futsch ist kommt ein Signal und das kann ich _angeblich_ mit Perl auffangen.
Es gibt etwas, dass SIGPIPE heisst. Allerdings habe ich nur Informationen
im Zusammenhang mit Sockets und Pipes. finden koennen. Das Problem ist,
dass das IMHO bei CGI nicht greift. Das ueber CGI aufgerufene Programm
gibt Ausgaben (ueber STDOUT) an den Webserver weiter. Wenn der Client
STOP drueckt, heisst das noch nicht, dass der Webserver den STDOUT
vom CGI nicht mehr aufnimmt. Ich habe das natuerlich nicht geprueft,
aber ich vermute einfach, dass es so ist. Ich weiss zumindest, dass
Cassiopeia, was ja ziemlich unumstritten der Marktfuehrer fuer HTTP-
Chats ist, auch Timeouts benutzt.
Ich habe trotzdem noch ein sehr destruktives Kommentar dabei:
Lass es sein. Ich finde, dass HTTP-Chats eines der uebelsten
Sachen ist, die es im Netz zu finden gibt. Da wird mit
Browser-Bugs, halbfunktionierenden Javascripts und so weiter
und so fort um die eigentliche Funktion von HTTP herumgebastelt.
Fuer Chats gibts IRC. Und wenn einem das nicht gefaellt, sollte
man halt schauen, dass man eine Alternative programmiert,
die nicht auf HTTP/HTML aufbaut. "Streaming-HTML" gibt es nicht,
ein Tag faengt an und _muss_ irgendwo aufhoeren. Wenn da
das </body> einfach nicht mitgeschickt wird, weil ja noch
Infos im body kommen, dann ist es alles andere als
selbstverstaendlich, dass die Seite gescheit angezeigt wird.
Soviel dazu, Entschuldigung, wenn das jetzt nicht ganz verstaendlich
war, ich bin ziemlich muede.
Schuesschen,
Gero
Moin,
ein Tag faengt an und _muss_ irgendwo aufhoeren.
recht hast du - ein Glueck, es gibt noch die Nacht zwischen den Tags ;)
ansonsten Zustimmung.
Gute Nacht,
n.d.p.
Tach,
ein Tag faengt an und _muss_ irgendwo aufhoeren.
recht hast du - ein Glueck, es gibt noch die Nacht zwischen den Tags ;)
Ui, der hat zwar ganz schoen lange gedauert, aber war richtig gut :)
Ich frage mich nur, ob da mein Unterbewusstsein getippt hat, oder ob
das wirklich Zufall war ;-)
Gut geschlafen?
Gero, gut geschlafen, wenn auch zu kurz.
Hallöchen Gero !!
Lange nicht mehr "gesehen"!
Muss undbbedingt meinen Senf dazu loswerden:
"Streaming-HTML" gibt es nicht,
ein Tag faengt an und _muss_ irgendwo aufhoeren. Wenn da
das </body> einfach nicht mitgeschickt wird, weil ja noch
Infos im body kommen, dann ist es alles andere als
selbstverstaendlich, dass die Seite gescheit angezeigt wird.
Aber streamendes Perl,
indem man zum Beispiel eine Schleife sich immer wiederholen lässt,
z.B. bis 1 == 2 aber den Wert 1 niemals erhöht
läuft ein permanenter load der seite = stream
Liebe Grüße,
das Aqua
Hi Aqua,
Lange nicht mehr "gesehen"!
Stimmt - und wer ist Schuld daran? ;-)
"Streaming-HTML" gibt es nicht,
Aber streamendes Perl,
Ja, ich habe auch nichts dagegen, einen Chat ueber ein Perl-basiertes
Kommandozeileninterface laufen zu lassen. Wenn du aber ueber CGI gehst,
kommt hinten immer HTML raus - und das ist eben unglaublich unsauber.
Ich hoffe, du verstehst, was ich sagen will. Es geht nicht um die
Umsetzbarkeit, sondern um die Sauberkeit und Zukunftssicherheit.
Gruesse,
Gero, der selbst mal so einen Chat programmiert hat, wenn auch in PHP.
Warum so umständlich..? -Mach's doch einfach so, daß jeder User beim Betreten des Chats einen Zeitstempel kriegt (der bei jedem Beitrag aktualisiert wird). Und sobald der nächste User sich einloggt und sein Name in die Datei aufgenommen wird, werden noch einmal alle Zeitstempel abgefragt. Ist einer älter als, sagen wir mal, zehn Minuten, wird der User aus der Datei gelöscht. Im Klartext: jeder neue User 'entrempelt' erst einmal die User-Datei. Das handhabe ich immer so -klappt wunderbar (Logout-Buttons sind fürn A... -da sich ja sowieso keiner die Mühe macht, draufzuklicken ;)
Mike