Chat privado con websocket

+1 voto
preguntado por Alfred Sanz (130 puntos) Ene 3 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
respondido por detectivejd (530 puntos) Ene 3

Preguntas relacionadas

0 votos
12 respuestas
0 votos
1 respuesta
preguntado por orestes (120 puntos) Ago 14, 2016 en PHP
0 votos
0 respuestas
0 votos
3 respuestas
+1 voto
0 respuestas
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
...