j4nk3y: Update einer Chatfunktion

Beitrag lesen

Moin,

Es gibt auch Websocket-Implementationen für PHP, beispielsweise Ratchet.

Das klingt schonmal sehr interessant, dass hab ich noch garnicht gefunden. Danke!

Ich habe mir aber schon einige Beispiele mit javascript angeschaut die da etwa so aussehen:

Das sind grundsätzliche Beispiele, wie man ein paar Bytes Information überträgt.

Wie grundsätzlich ein Websocket funktioniert ist mir klar. Ich bin nur vollkommen damit überfordert wie es weiter geht.

Was du noch brauchst, ist ein Protokoll, das festlegt, welche Nachrichten Client und Server austauschen und wie die zu formatieren sind. Das muss ja nichts großartig komplexes sein, aber ganz ohne Überlegungen wirst du nicht weit kommen.

Das ist mir klar und genau daran scheitere ich, was mich auf die glorreiche Idee gerbracht hat einfach mal die Experten zu fragen.

Ok, man kann sich auch bis zum Ziel durchscheitern, aber angenehm ist sowas nicht unbedingt

Ich würde gern am Scheitern scheitern. Darum frage ich euch.

Wie grundsätzlich ein Websocket funktioniert ist mir klar. Ich bin nur vollkommen damit überfordert wie es weiter geht. Was ich also machen muss damit, dass was vom Client ankommt was ich in php verwerten kann und wie das dann wieder zurück geschickt wird in abhängigkeit davon was angekommen ist.

Der erste Schritt wäre Verständnis aufzubauen, was da in diesen einfachen Einführungsbeispielen passiert.

  1. Websocket object wird angelegt:
var connection = new WebSocket('ws://html5rocks.websocket.org/echo', ['soap', 'xmpp']);
  1. Wenn die Websocket verbindung aufgebaut "werden kann"/ist (hier bin ich mir etwas unsicher aber sollte, ist sein) dann sende etwas zum Server.
connection.onopen = function () {
  connection.send('Ping');
};
  1. Falls bei der Verbindung ein Fehler auftritt gib den error an die Consol.log weiter:
connection.onerror = function (error) {
  console.log('WebSocket Error ' + error);
};
  1. Da müsste doch noch ein .onclose kommen? Obwohl, da sollte/dürfte ja nichts weltbewegendes passieren.
connection.onclose = function () {
  };

Zusätzlich schaffe ich es schon in der Ausgangsversion nicht, mehere Tabellen anzusprechen. Sprich der javascript Funktion list_chat() die ganzen Werte aus den Checkboxen mitzugeben und die dann in die chat_list.php zu migrieren. Genauso wie post_chat() einen Wert mitgeben damit chat_insert.php weiss, in welche Tabelle (wie und was) geschreiben werden soll.

Brich doch diese Anforderung mal runter auf kleine Teileinheiten. Solche kleinen Einheiten kann man nämlich wesentlich besser separat entwickeln und testen als zu versuchen, in einem großen Topf Spaghetti die Nudeln in eine Ordnung zu bringen. Der erste Schritt ist, die Eingabeelemente so auszulesen, dass die Daten in einer strukturtierten Form vorliegen.

Ja, das kriege ich eben nicht hin. Ich schaffe es nicht, mehr Variablen aus dem Formular in die javascript Funktionen und dann weiter zu php zu reichen.

Sicher, dass reine speichern des Chatverlaufs hat performant nichts mit einem Websocket zutun. Es geht ja nur darum die chat_list() nicht jede Sekunde für jeden User der gerade "online" ist auszuführen und immer wieder die gleichen Daten neu aus der Datenbank zu ziehen.

Dann empfielt sich vielleicht ein Zeitstempel und den Client fragen zu lassen: Gib mir mal alle Daten ab $time.

Genau das passiert doch gerade jede Sekunde.

Der Websocket hat den Vorteil, dass man solche Polling-Anfragen nicht stellen muss, sondern der Server von sich aus neue Informationen schicken kann. Aber dazu muss man die Voraussetzungen für Websockets haben, womit wir wieder dabei sind, erstmal diese Voraussetzungen abzuklären.

Genau das ist der Ansatzpunkt der Frage, das eben keine Polling-Anfragen Zyklisch passieren.

Gruß Jo

0 151

Update einer Chatfunktion

j4nk3y
  • html
  • javascript
  • php
  1. 2
    Felix Riesterer
    • datenbank
    • php
    • sicherheit
    1. 0
      j4nk3y
      1. 0
        Gunnar Bittersmann
    2. 0
      Gunnar Bittersmann
      1. 0
        Matthias Apsel
        1. 0
          Gunnar Bittersmann
      2. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
      3. 0
        Felix Riesterer
        1. 0
          j4nk3y
          • zur info
          1. 1
            Felix Riesterer
            • php
            • programmiertechnik
            • zur info
            1. 0
              j4nk3y
        2. 0
          Gunnar Bittersmann
    3. 0
      j4nk3y
      1. 0
        Felix Riesterer
        • php
        • programmiertechnik
        • sicherheit
        1. 0
          j4nk3y
          1. 0
            Der Martin
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
          2. 0
            Felix Riesterer
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
              2. 1
                dedlfix
                1. 0
                  Gunnar Bittersmann
                  • typografie
                2. 0
                  j4nk3y
                  1. 0
                    dedlfix
                    1. 0
                      j4nk3y
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            dedlfix
                            1. 0
                              j4nk3y
                              1. 0
                                Der Martin
                                1. 0
                                  j4nk3y
                                  1. 0
                                    Der Martin
                              2. 1
                                dedlfix
                                1. 0
                                  Der Martin
                              3. 0
                                Gunnar Bittersmann
                                • datenbank
                                • programmiertechnik
                                1. 0
                                  j4nk3y
        2. 0
          Der Martin
        3. 0
          Gunnar Bittersmann
          • internationalisierung
          • php
          1. 0
            Felix Riesterer
            1. 0
              Tabellenkalk
              • zitat
              • zu diesem forum
              1. 1
                Matthias Apsel
    4. 0
      1unitedpower
      1. 1
        dedlfix
        1. 1
          1unitedpower
          1. 0
            Christian Kruse
          2. 0
            dedlfix
            1. 0
              1unitedpower
              1. 0
                dedlfix
                1. 0
                  Christian Kruse
                  1. 0
                    dedlfix
                  2. 0
                    1unitedpower
                    1. 0
                      Christian Kruse
                      1. 0
                        1unitedpower
                    2. 0
                      dedlfix
                      1. 0
                        1unitedpower
                        1. 0
                          dedlfix
  2. 0
    j4nk3y
    1. 0
      Gunnar Bittersmann
      • html
      1. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
            1. 0
              Matthias Apsel
              1. 0
                j4nk3y
  3. 0
    j4nk3y
  4. 0
    pl
    1. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            dedlfix
            1. 0
              j4nk3y
              1. 0
                pl
                1. 0
                  j4nk3y
                  1. 0
                    pl
                    1. 0
                      dedlfix
                      1. -2
                        pl
                        1. 0
                          Matthias Apsel
                  2. 0
                    pl
              2. 0
                dedlfix
                1. 0
                  j4nk3y
                  1. 0
                    dedlfix
            2. 0
              j4nk3y
              1. 0
                dedlfix
      2. 0
        pl
  5. 0
    j4nk3y
    1. 0
      dedlfix
    2. 0
      j4nk3y
      1. 0
        j4nk3y
        1. 0
          pl
        2. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              dedlfix
              1. 0
                j4nk3y
          2. 0
            j4nk3y
            1. 0
              j4nk3y
  6. 0
    j4nk3y
    1. 0
      Der Martin
      1. 0
        j4nk3y
        1. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              Der Martin
              1. 0
                j4nk3y
        2. 0
          Der Martin
          1. 0
            j4nk3y
            1. 1
              Felix Riesterer
              1. 0
                j4nk3y
                1. 0
                  Matthias Apsel
                  1. 0
                    j4nk3y
                    • menschelei
                2. 0
                  Felix Riesterer
                  • php
                  • programmiertechnik
                  • sql
                  1. 0
                    j4nk3y
                    1. 0
                      Der Martin
                      1. 0
                        j4nk3y
                        1. 0
                          Der Martin
                          1. 0
                            j4nk3y
                            • menschelei
                    2. 0
                      Felix Riesterer
                      1. 0
                        pl
                      2. 0
                        j4nk3y
                        1. 2
                          dedlfix
                          1. 0
                            j4nk3y
                            1. 0
                              dedlfix
                              1. 0
                                Christian Kruse
                                1. 1
                                  dedlfix
                  2. 0
                    j4nk3y
                  3. 0
                    j4nk3y
                    1. 0
                      Felix Riesterer
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            pl
                            1. 0
                              j4nk3y
                          2. 0
                            dedlfix
                      2. 0
                        j4nk3y
                        1. 0
                          Der Martin
                        2. 0
                          Felix Riesterer
                          1. 0
                            Der Martin
                            1. 0
                              dedlfix
                          2. 0
                            j4nk3y
                            1. 1
                              Der Martin
                              1. 0
                                j4nk3y
    2. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            Christian Kruse
            1. 0
              j4nk3y
              1. 0
                Christian Kruse
              2. 0
                Matthias Apsel
                • zu diesem forum
                1. 0
                  j4nk3y