Hallo!
stimmt, aber IMO benötigst du eine direkte (bzw. semi-direkte) verbindung zwischen client, applet/flash und server, denn mit request/respons ist es IMO nicht machbar... der punkt hier ist, dass PHP immer nur über HTTP daten _ausgeben_ kann, das ist der pferdefuss darin.
Wieso? mit Sockets... kann man doch auch an Ports lauschen und entsprechend reagieren, über TCR/IP, wie immer Du willst antworten. Die Grundlage für meinen Messanger wäre dieses Tutorial für einen HTTP-basierten Chat mit PHP/Flash:
http://www.ultrashock.com/ff.htm?http://www.ultrashock.com/tutorials/flash5/multiuser.html
OK, bei Chats kann ich es verstehen das man es eine "Vergewaltigung" des http-protokolls ansehen könnte, da die Nachrichten ja immer an alle geschickt werden - wobei ch das etwqas überzogn finde, da auch in IRC die TCP/IP Pakete an alle verschickt werden, keien Ahnung wo ganu jetzt der Vorteil von IRC liegen soll, ist es nur ein geringerer Overhead? Ich finde es viel eher eine Vergewaltigung 1GB große Filme über http. zu übertragen - das verstopft die Leitungen, aber so eine paar byte große Nachricht an 10 Clients ist da wohl harrmlos. Und außerdem - der Instant Messanger schickt die Nachricht nur an 1 Client! Wie schonmal gesagt, da sehe ich noch nichtmal mehr einen großen Nachteil im Gegensatz zu IRC! Von wegen alternativer Protikolle, evtl sollte man tatsächlich mal über was anders Nachdenken, warum nicht email? Wenn der Messanger Client ein selbst programmierter Email-Client _und_ Server ist? Nur mal so ne Idee.
http://www.php.net/manual/de/function.fsockopen.php
da steht nur was von TCP, sogar UDP ist möglich, und ich habe z.B. auch in den Kommentaren was von SMTP gelesen.
schön. allerdings für _einmalige_ ausgabe, nicht für eine ständige kommunikation mit dem client.
bin ich so begriffsstutzig oder will ich das einfach nicht verstehen? Beispiel 1:
http://www.dynamic-webpages.de/php/ref.sockets.php
Da ist ein in PHP programmierter TCP/IP Server der an Port 10000 lauscht. Wo soll das Problem liegen? Was hat das ganze mit der http-Ausgabe zu tun? Was soll PHP überhaupt an wen ausgeben? fsockopen kann auch andere Verbindungen als http herstelln udn dann bekommt PHP halt die angefragten Daten und kann damit machen was es will, das hat rein gar nichts mit HTTP zu tun! Das ist doch TCP/IP Ebene!
ja, das stimmt. deswegen benötigst du wie schon gesagt ein socket, das direkt und in echtzeit in verbindung zum client stehen kann. PHP kann zwar sockets, aber nicht die verbindung zum client permanent halten.
Kann das PERL? Oder gibt es da am besten ein standard-Linux-Tool für die Shell, das sowas kann? Vielleicht sogar curl?
Was würdest Du für ein Protokoll empfehlen? IRC? Wo bekommt man Infos, wie da die Kommunikation abläuft?
mhh, _das_ ist in der Tat das hauptproblem, ich weiß es nicht. Ich würde auch auf IRC tippen, aber ich denke nicht, dass das bei den "großen" Instant Messengern noch zur Anwendung kommt, die werden eigene Protokolle haben, speziell MSN z.B....
Und wenn man auch sein eigenes entwickelt? Aber das sind Regionen, von denen ich fast noch weniger als O Ahnung habe ;-)
Fände es gut wenn Cheatah mal was dazu sagen könnte, den er ist es der immer so gegen PHP-Chats wettert und sich daher wohl auskenne sollte!
Und nochwas anders - braucht man denn überhaupt einen Server, der eine ständige Verbindung hat? Wozu? Reicht es nicht wenn der Sever eine Anfrage erhält, diese auf den entsprechenden Client weiterzuleiten, und der muß dann halt reagieren können, also muß der Client an einem Port lauschen können, was ein Browser nicht kann, Flash und Java schon. Also verstehe ich weder warum http nicht geeignet sein soll, noch warum PHP als Serveranwenung nicht geeignet sein soll! Was könnte eine Serveranwendung, die die Socket-Verbindung offen hält besser, als ich oben beschrieben habe?
Und woher weißt Du genau(woran sehe ich), das PHP dieses nicht kann, wie sieht man das an anderen Sprachen, das es funktioniert? Was fehlt PHP dazu? PHP braucht zumindest keine http-Ausgabe, PHP funkioniert sehr gut über die Kommandozeile und kann tolle Sachen machen. PHP kann TCP/IP Sockets öffnen, die Ausgabe bearbeiten und reagieren, nur kann ein PHP-Script glaube ich nicht als Hintergrundprozess laufen(oder doch?)... wer kennt sich da ein wenig aus und kann mir ein wenig auf die Sprünge helfen wo jetzt das eigentliche Problem liegt, das ich noch nicht sehen kann?
Viele Grüße
Andreas