Salve, tempo fà avevo aperto su questo forum un tread riguardante questo argomento, le risposte ricevute sono state esaurienti e trovando la soluzione avevo anche l'avevo anche postata, ecco qui nel caso vogliate vederla: http://forum.html.it/forum/showthrea...4&pagenumber=3 .
Tuttavia è sorto un problema nell'applicazione della stessa su un'altro sito web, di cui non m avvalgo del supporto del db per stampare ogni volta i messaggi.
Codice PHP:
$messaggio = 'prova: ciao';
do{
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Impossibile creare il socket\n");
socket_connect($socket, $host, $port) or die("Impossibile collegarsi al server\n");
socket_write($socket, $messaggio, strlen($messaggio)) or die("Impossibile inviare il messaggio al server\n");//con questo mando il messaggio stampato sul socket, in modo da farlo vedere a tutte le pagine in cui è presente la chat
$leggi = socket_read ($socket, 1024) or die("Impossibile leggere la risposta di ritorno dalla pagina server\n");
$messaggio = $leggi;
echo $messaggio;
socket_close($socket);//a differenza della pagian server.php qui possiamo chiudere il socket, poichè abbimo già trattato i valori e stampato i risultati
}while(1);
Ho optato per un ciclo do-while, in quanto vorrei reuperare i valori stampati in precedenza all'apertura della pagina e aggiornarla all'occorrenza.
Il problema è questo: non riesco a dire al server che deve eseguire il ciclo o continuare a eseguirlo solo quando il socket ha un valore reale, e quindi è effettivamente un messaggio.
Preciso che un socket vuoto, come in questo caso non è mai vuoto, se stampate un socekt vuoto avrete: ' ', ovvero lascia lo spazio, quindi il valore "strlen($socket) == '1'" è sempre vero se è vuoto.
Dopo questa spiegazione ecco l'obbiettivo che vorrei raggiungere: attivare il ciclo while solo se il socket ha un valore diverso dallo spazio vuoto. Spero qualcuno mi possa essere d'aiuto.