+1 voto
por (30 puntos) en PHP
Hola, estoy rehaciendo un chat donde un cliente puede chatear con un asesor. anteriormente lo hice usando peticiones AJAX pero consume muchos recursos. Ahora quiero usar websockets pero no encuentro la manera de que los mensajes enviados se muestren solamente a los implicados en la conversación; los mensajes se muestran en todos los clientes. A continuación les coloco parte del código que uso:

foreach ($changed as $changed_socket) {    
        
        //check for any incomming data
        while(socket_recv($changed_socket, $buf, 1024, 0) >= 1)
        {
            $received_text = unmask($buf); //unmask data
            $tst_msg = json_decode($received_text); //json decode
            $user_name = $tst_msg->name; //sender name
            $user_message = $tst_msg->message; //message text
            $user_color = $tst_msg->color; //color
            
            //prepare data to be sent to client
            $hora=date('h:m');
            $response_text = mask(json_encode(array('type'=>'usermsg', 'name'=>$ip, 'message'=>$user_message, 'color'=>$user_color, 'hora'=>$hora)));
            send_message($response_text); //send data
            break 2; //exist this loop
        }
        
        $buf = @socket_read($changed_socket, 1024, PHP_NORMAL_READ);
        if ($buf === false) { // check disconnected client
            // remove client for $clients array
            $found_socket = array_search($changed_socket, $clients);
            socket_getpeername($changed_socket, $ip);
            unset($clients[$found_socket]);
            
            //notify all users about disconnected connection
            $response = mask(json_encode(array('type'=>'system', 'message'=>$ip.' disconnected')));
            send_message($response);
        }
    }

1 Respuesta

0 votos
por (450 puntos)

Preguntas relacionadas

0 votos
12 respuestas
0 votos
1 respuesta
preguntado por serggyo (40 puntos) Nov 25, 2020 en PHP
0 votos
0 respuestas
preguntado por christian (20 puntos) Jul 13, 2020 en PHP
0 votos
0 respuestas
0 votos
1 respuesta
preguntado por orestes (20 puntos) Ago 14, 2016 en PHP
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...