michael weibel: Chat

hi all

ich möchte einen chat in php machen, nun weiss ich aber nicht wie dass man machen kann, dass wenn ein benutzer eine message schreibt, dass dann sofort bei den andern benutzern diese message erscheint...
kann man dies nur mit JAVA machen oder auch mit PHP oder JAVAscript?
Vielen Dank im Voraus

mfg
mix

  1. Hallo mix,

    kann man dies nur mit JAVA machen oder auch mit PHP oder JAVAscript?

    _Theoretisch_ kannst Du es auch mit PHP machen - aber das ist nicht im Sinne des HTTP-Protokolls. Du müßtest nämlich entweder die Verbindung zum Server immer offen halten oder Du müßtest die Seite ständig neu laden. Beides verbrät enorme Rechenleistung auf dem Server - Dein Hoster wird Dich, wenn er nicht blöd ist, deswegen rausschmeißen. (oder Dein Chat-Script löschen, wenn er etwas besser drauf ist) Und wenn Du einen Hoster hast, der das erlaubt, dann mußt Du entweder eine ganze Menge zahlen, oder der Hoster ist blöd, dass ich mir einen Wechsel alleine aus dem Grund überlegen würde.

    Java in Verbindung mit IRC (so wie der SELFChat) ist da schon eine deutlich bessere Lösung.

    Christian

    --
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
    1. Vielen Dank...
      Ich werd mal schauen

  2. ich möchte einen chat in php machen, nun weiss ich aber nicht wie dass man machen kann, dass wenn ein benutzer eine message schreibt, dass dann sofort bei den andern benutzern diese message erscheint...

    Du hast das grundlegende Problem Deines Ansinnens erkannt. Webseiten werden per HTTP übertragen und HTTP ist zum einen ein verbindungsloses Protokoll und zum zweiten eine Einbahnstraße vom Client zum Server. Du hast also keine Möglichkeit, direkt beim Eintreffen einer Nachricht auf dem Server diese Nachricht vom Server an die anderen Clients (Webbrowser) weiterzuleiten.

    Einige ganz besonders schlaue Menschen versuchen, diese Schwierigkeit zu umgehen, indem sie den Browser einfach alle halbe Sekunde die Seite neu laden lassen. Um es kurz zu machen: Das ist Schwachsinn weil Resourcenverschwendung, und -je nach Frequenz- äußerst unverschämt, weil man dafür nicht selbst bezahlt.

    Wenn Du einen netten Chat haben willst, der mit einigen 10.000 Teilnehmern weltweit jederzeit (!) gut bevölkert ist, solltest Du Dich bzw. Deine Kundschaft in eines der IRC-Netzwerke einklinken. Ausgereifte Clients gibt es für alle möglichen und unmöglichen Systeme und auch als Java-Applet für den Webbrowser. Der SelfChat benutzt diese Möglichkeit ebenfalls (http://aktuell.de.selfhtml.org/live/chat.htm).

    Infos findest Du unter http://irchelp.org. Du kannst auch mal im Forumsarchiv suchen, die Problematik taucht regelmäßig auf.

    Gruß,
      soenk.e

    1. Hi Sönke,

      Du hast das grundlegende Problem Deines Ansinnens erkannt. Webseiten werden per HTTP übertragen und HTTP ist zum einen ein verbindungsloses Protokoll und zum zweiten eine Einbahnstraße vom Client zum Server. Du hast also keine Möglichkeit, direkt beim Eintreffen einer Nachricht auf dem Server diese Nachricht vom Server an die anderen Clients (Webbrowser) weiterzuleiten.
      Einige ganz besonders schlaue Menschen versuchen, diese Schwierigkeit zu umgehen, indem sie den Browser einfach alle halbe Sekunde die Seite neu laden lassen. Um es kurz zu machen: Das ist Schwachsinn weil Resourcenverschwendung, und -je nach Frequenz- äußerst unverschämt, weil man dafür nicht selbst bezahlt.

      Jein. IMHO ist es nicht mehr Ressourcenverschwendung einen HTTP-304-Header zu senden als ein IRC-Paket, das leer ist.

      Wenn Du einen netten Chat haben willst, der mit einigen 10.000 Teilnehmern weltweit jederzeit (!) gut bevölkert ist, solltest Du Dich bzw. Deine Kundschaft in eines der IRC-Netzwerke einklinken. Ausgereifte Clients gibt es für alle möglichen und unmöglichen Systeme und auch als Java-Applet für den Webbrowser. Der SelfChat benutzt diese Möglichkeit ebenfalls (http://aktuell.de.selfhtml.org/live/chat.htm).

      Ich habe nichts gegen IRC, aber ich wehre mich gegen das pawlowsche "Geht nicht, mach's halt so, wie's alle machen!", das von all zu vielen hier (auch von mir) all zu oft angewendet wird. IMHO. Und das meine ich nicht auf dich bezogen, denn _deine_ Antwort war zu diesem Thema erstaunlich detailiert ;-))

      Fabian

      1. Einige ganz besonders schlaue Menschen versuchen, diese Schwierigkeit zu umgehen, indem sie den Browser einfach alle halbe Sekunde die Seite neu laden lassen. Um es kurz zu machen: Das ist Schwachsinn weil Resourcenverschwendung, und -je nach Frequenz- äußerst unverschämt, weil man dafür nicht selbst bezahlt.
        Jein. IMHO ist es nicht mehr Ressourcenverschwendung einen HTTP-304-Header zu senden als ein IRC-Paket, das leer ist.

        Das ist durchaus ein Argument, aber welcher Anteil der PHP-Berserker kennt sich denn bitte mit HTTP aus? Selbst normale Weiterleitungen aus PHP heraus werden unter Garantie zu einem Drittel mittels ausgeben eines <meta>-Refreshs erledigt und zu einem zweiten Drittel mit Javascript..

        Davon abgesehen ist der Verbrauch für Verbindungsverwaltung (ständiges Auf- und Abbauen) und HTTP-Abfragen/-Antworten auf die Dauer gesehen IMHO durchaus deutlich größer als eine IRC-Verbindung. Im Leerlauf hast Du bei IRC nur regelmäßige "Hallo-ich-bin-noch-da"-Meldungen der Verbindungsverwaltung, im Betrieb wird bei IRC nur die neue Zeile übertragen, bei HTTP hingegen die komplette Seite.

        Ich habe nichts gegen IRC, aber ich wehre mich gegen das pawlowsche "Geht nicht, mach's halt so, wie's alle machen!", das von all zu vielen hier (auch von mir) all zu oft angewendet wird.

        Ich habe nicht gesagt, daß es nicht geht, ich habe nur gesagt, daß es Schwachsinn ist :) Ein hingeplumpstes "Geht nicht" ist natürlich nicht sonderlich sinnvoll, eine vernünftige Erklärung sollte schon dabei sein.

        Gruß,
          soenk.e

  3. Tach auch,

    ich möchte einen chat in php machen, nun weiss ich aber nicht wie dass man machen kann, dass wenn ein benutzer eine message schreibt, dass dann sofort bei den andern benutzern diese message erscheint...
    kann man dies nur mit JAVA machen oder auch mit PHP oder JAVAscript?

    Mit PHP und mySql wird's hier geloest: http://www.blogchat.com/.

    Wie das genau funktioniert weiss ich jetzt nicht mehr so ganz, zumindest nicht ueber einen Refresh der ganzen Seite soweit ich mich entsinnen kann. Mit ein bisschen Glueck triffst Du Brent (der hat das ganze entwickelt) ja online an, ich habe ihn allerdings die letzten Monate nie angetroffen wenn ich mal auf seinen Seiten war.

    Gruss,
    Armin

    --
    Location: Swindon/Wiltshire/England/UK/Europe/Northern Hemisphere/Planet Earth/Solar System/Milky Way Galaxy/Universe
    http://www.ministryofpropaganda.co.uk/
    1. Mit PHP und mySql wird's hier geloest: http://www.blogchat.com/.

      Wie das genau funktioniert weiss ich jetzt nicht mehr so ganz, zumindest nicht ueber einen Refresh der ganzen Seite soweit ich mich entsinnen kann.

      <iframe>. Das hilft ihm aber sicher auch nicht über das angesprochene HTTP-Problem hinweg.

      Gruß,
        soenk.e