Websocket kleines Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Websocket kleines Problem

    Hallo lieber Programmierfreunde,

    ich habe mich nun extra hier angemeldet, da ich ein Problem habe, für das ich keine Erklärung finde.

    Also zur Sache. Ich habe mich in den letzten Wochen sehr intensiv mit WebSockets beschäftigt. Ich bin nur ein Hobbyprogrammierer und habe mir sämtliches Material aus dem Internet gesucht, das ich brauche. Nun habe ich es tatsächlich endlich hinbekommen einen WebSocket zum laufen zu bringen.
    Alleine das hat mich schon einiges an Nerven gekostet .

    Ich kann mich über die Console via Telnet auch super verbinden und kann was eintippen was mit Enter dann gesendet wird (PHP_NORMAL_READ).

    Der Server erkennt auch wenn neue Benutzer hinzukommen.

    Nun zu meinem Problem.

    Sobald ich Daten eintippe oder eine neue Verbindung aufbaue, ist mir aufgefallen, dass die WHILE-Schleife, die eigentlich kontinuierlich laufen sollte,
    stoppt.

    Hier mal mein kleiner Quellcode. Ich hoffe ich bekomme schnell eure Hilfe =)
    (mal ebend schnell auskommentiert. Ich hoffe das reicht so)
    PHP-Code:
    <?php

        
    // Fehlermeldung abschalten
        
    error_reporting(0);
        
    // Laufzeit auf Endlos stellen
        
    set_time_limit(0);
            
        class 
    websocket
        
    {
            private 
    $ip '127.0.0.1' ;
            private 
    $host 8000 ;

            
    // Hier werden alle Socketverbindungen eingetragen
            
    private $clients = array();

            function 
    __construct()
            {
                
    // Socket erzeugen ( Mastersocket )
                
    $this->socket socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
                
    // Socket mit Namen verbinden
                
    socket_bind($this->socket,$this->ip,$this->host);
                
    // Auf Verbindungen warten
                
    socket_listen($this->socket);

                
    // Alle Verbindungen werden hier gespeichert
                
    $clients = array($this->socket);

                
    // Endlosschleife
                
    while(true)
                {

                    
    sleep(0);

                    
    $read $clients ;
                    
    // Veränderung prüfen
                    
    $change socket_select($read$w NULL$e NULL0);

                    
    // Prüfen ob es eine neue Verbindung gibt
                    
    if($change == 1){
                        
    // Für den neuen Client seine Socket_ID zuweisen
                        
    $new_client count($clients);
                        
    // Neuen Client in den Clientarray eintragen
                        
    $clients[$new_client] = socket_accept($this->socket);
                        
    // In der Konsole ausgeben
                        
    echo "#".$new_client." logged in\n" ;
                        
    // Bei dem neuem Client ausgeben
                        
    socket_write($clients[$new_client], "#".$new_client." logged in\n\r");
                    } 

                    
    // alle clienten durchgehen
                    
    for($i count($clients); $i>0$i--)
                    {
                        foreach(
    $clients as $client)
                        {
                            
    // Prüfen on Client was geschrieben hat
                            
    if($buf socket_read($client,2048,PHP_NORMAL_READ))
                            {
                                
    // Wenn mehr als 1 zeichen getippt wurde
                                
    if(strlen($buf)>=2)
                                {
                                    
    // In der Konsole ausgeben
                                    
    echo $client " sagt " .$buf "\n";
                                }
                            }
                        }
                    }

                }

            }

        }
        
    $socket = new websocket;
    ?>
    Vielen vielen Dank für eure Hilfe.

    PS: Ich nehme extrem gerne Verbesserungsvorschläge entgegen =)

  • #2
    Kann mir denn niemand helfen ? Wäre wirklich dankbar

    Kommentar


    • #3
      PHP-Code:
          // Fehlermeldung abschalten
          
      error_reporting(0); 
      Allein mit dieser Zeile hast du dich schon disqualifiziert. Wir wärs mit selbst debuggen, bevor man die Arbeit an Fremde abtreten will?
      This is what happens when an unstoppable force meets an immovable object.

      Kommentar

      Lädt...
      X