Hi,
nach einem sehr interessanten Bericht in der iX (Klaus Klepper (2006): "Am Drücker - Latenzarme Kommunikation für Ajax-Anwedungen", iX 06/07, S.122 ff.) habe ich mich mit der dort vorgestellten Möglichkeit, asynchrone Messages an den Browser zu Sender, beschäftigt.
Generell ein sehr interessantes Thema. Die Listings zum Thema können hier runtergeladen werden:
ftp://ftp.heise.de/pub/ix/ix_listings/2007/06/web20.tar
Etwas, wo ich aber nicht genau hinterkomme, ist die Frage nach dem: "Und weiter?". Also, es ist ja schön und gut, Nachrichten an den Browser schicken zu können, nur ohne Threads sehe ich wenig Anwendungsmöglichkeiten. Denn was ich ja z.B. machen möchte, ist, wenn ne neue Nachricht (in welcher Form auch immer) reinkommt, direkt allen Nutzern, die ne offene Verbindung haben, diese Message zu schicken. Klar könnte ich einfach andauernd ne schleife über ne Datenbankabfrage laufen lassen, aber da kann ich ja gleich mittels Polling alle paar Sek. das Skript aufrufen lassen. Serverlast wäre ähnlich hoch.
Jetzt habe ich 2 Ideen dazu (und leider keine Zeit, sie auszuprobieren):
1. Das Script, dass vom Browser aufgerufen wird, kreiert ein neues Objekt (nennen wir es Client). Gleichzeitig wird eine Liste der Objekte in ClientList geführt. Danach geht das Skript in einen Wartezustand. Wenn nun eine neue Nachricht ankommt, ruft sie für jeden Client aus der ClientList ne Methode addMessage($message) aus, und das betroffene Client-Objekt sendet daraufhin die Message an den Browser (aber wie genau geht sowas/geht sowas überhaupt?).
2. Threads. Hatte in Java mal ganz kurz das Vergnügen, aber wirklich nur mal kurz drübergeguckt, als praktisch keine Erfahrungen. Aber m.m.n. müsste es mindestens in Java möglich sein, einen Thread auf ein Ereignis warten zu lassen und derweil keine Serverlast zu verursachen. Das wäre ja dann genau sowas, was ich bräuchte. Gibt es sowas in PHP/Perl? Ich gehe stark von "Nein" aus, aber ich lasse mich gerne überraschen.
Andere Ideen? Evtl. wirklich in Java was programmieren und dann TomCat aufsetzen? Generell müsste man sich mal mit TomCat beschäftigen, ich glaube, da ist viel möglich. Arg, wenn nur das Zeit-Problem nicht wäre
Naja, ich freue mich auf eure Ideen,
Sebastian
PS: Gibt es eigentlich Webspace-Angebote, bei denen TomCat läuft? Weil eigener Server ist wohl zu oversized für das, was ich so vorhabe
nach einem sehr interessanten Bericht in der iX (Klaus Klepper (2006): "Am Drücker - Latenzarme Kommunikation für Ajax-Anwedungen", iX 06/07, S.122 ff.) habe ich mich mit der dort vorgestellten Möglichkeit, asynchrone Messages an den Browser zu Sender, beschäftigt.
Generell ein sehr interessantes Thema. Die Listings zum Thema können hier runtergeladen werden:
ftp://ftp.heise.de/pub/ix/ix_listings/2007/06/web20.tar
Etwas, wo ich aber nicht genau hinterkomme, ist die Frage nach dem: "Und weiter?". Also, es ist ja schön und gut, Nachrichten an den Browser schicken zu können, nur ohne Threads sehe ich wenig Anwendungsmöglichkeiten. Denn was ich ja z.B. machen möchte, ist, wenn ne neue Nachricht (in welcher Form auch immer) reinkommt, direkt allen Nutzern, die ne offene Verbindung haben, diese Message zu schicken. Klar könnte ich einfach andauernd ne schleife über ne Datenbankabfrage laufen lassen, aber da kann ich ja gleich mittels Polling alle paar Sek. das Skript aufrufen lassen. Serverlast wäre ähnlich hoch.
Jetzt habe ich 2 Ideen dazu (und leider keine Zeit, sie auszuprobieren):
1. Das Script, dass vom Browser aufgerufen wird, kreiert ein neues Objekt (nennen wir es Client). Gleichzeitig wird eine Liste der Objekte in ClientList geführt. Danach geht das Skript in einen Wartezustand. Wenn nun eine neue Nachricht ankommt, ruft sie für jeden Client aus der ClientList ne Methode addMessage($message) aus, und das betroffene Client-Objekt sendet daraufhin die Message an den Browser (aber wie genau geht sowas/geht sowas überhaupt?).
2. Threads. Hatte in Java mal ganz kurz das Vergnügen, aber wirklich nur mal kurz drübergeguckt, als praktisch keine Erfahrungen. Aber m.m.n. müsste es mindestens in Java möglich sein, einen Thread auf ein Ereignis warten zu lassen und derweil keine Serverlast zu verursachen. Das wäre ja dann genau sowas, was ich bräuchte. Gibt es sowas in PHP/Perl? Ich gehe stark von "Nein" aus, aber ich lasse mich gerne überraschen.
Andere Ideen? Evtl. wirklich in Java was programmieren und dann TomCat aufsetzen? Generell müsste man sich mal mit TomCat beschäftigen, ich glaube, da ist viel möglich. Arg, wenn nur das Zeit-Problem nicht wäre
Naja, ich freue mich auf eure Ideen,
Sebastian
PS: Gibt es eigentlich Webspace-Angebote, bei denen TomCat läuft? Weil eigener Server ist wohl zu oversized für das, was ich so vorhabe