Показать сообщение отдельно

  #10  
Старый 27.03.2009, 19:48
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

Krist_ALL Естественно "завис". Клиент принял пакет и в бесконечном цикле ждет, когда придет следующий, а в браузер ничего не выводится из-за буферизации вывода.

Сделай так:
PHP код:
<?php 
$JABBER_SERVER 
"jabber.ru"
$PORT 5222;  
$i=0;

$socket socket_create(AF_INETSOCK_STREAMSOL_TCP); 

if(!
$socket) { echo 'soket open - NO'; exit; } else { echo 'socket open - OK<br>'; }  

$connect socket_connect($socket$JABBER_SERVER$PORT); 

if(!
$connect) { echo 'soket connect - NO'; exit; } else { echo 'socket connect - OK<br>'; }   

$t "<stream:stream to='jabber.ru' xmlns='jabber:client' "
$t .= "xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'/> ";  

echo 
'<b>Клиент - </b>'.htmlspecialchars($t).'<br><br>'

socket_write($socket$t);   



while (
1)  {      


$read=array($socket);      
$count=socket_select($read,$write=null,$exceptionnull,1);      
// Если ничего не пришло пропускаем      
// Или если нужно что то послать по собственному желанию - отправляем      
if ($i++ > 5) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов
if ($count<1) continue;             
foreach (
$read as $one)     
{        
$input=socket_read($one,4096);          
echo 
"htmlspecialchars($input)";         
// Тут обработка принятого пакета          
// например если пришел пакет  stream features ответить пакетом начала SASL авторизации          //

echo '<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";       
}  
}
?>
 
Ответить с цитированием