Сам код:
код работает, но отсылает ответ, только тому клиенту который прислал сообщение.
public static function getConnection()
{
$paramsPath=ROOT.'/config/websocket_params.php';
$params= include ($paramsPath);
$socket = stream_socket_server("tcp://".$params['host'].":".$params['port'], $errno, $errstr);
if (!$socket)
{
die("$errstr ($errno)\n");
}
$connects = array();
while (true)
{
//формируем массив прослушиваемых сокетов:
$read = $connects;
$read []= $socket;
$write = $except = null;
if (!stream_select($read, $write, $except, null))
{//ожидаем сокеты доступные для чтения (без таймаута)
break;
}
if (in_array($socket, $read))
{//есть новое соединение
//принимаем новое соединение и производим рукопожатие:
if (($connect = stream_socket_accept($socket, -1)) && $info = self::handshake($connect))
{
$connects[] = $connect;//добавляем его в список необходимых для обработки
self::onOpen($connect, $info);//вызываем пользовательский сценарий
}
unset($read[ array_search($socket, $read) ]);
}
foreach($read as $connect)
{//обрабатываем все соединения
$data = fread($connect, 100000);
if (!$data)
{ //соединение было закрыто
fclose($connect);
unset($connects[ array_search($connect, $connects) ]);
self::onClose($connect);//вызываем пользовательский сценарий
continue;
}
self::onMessage($connect, $data);//вызываем пользовательский сценарий
}
}
fclose($socket);
}
public static function sendMessage($connect, $data)
{
echo self::decode($data)['payload'] . "\n";
//fwrite($connect, self::encode('Получил'));
if(self::decode($data)['payload']=="getSwitches")
{
$response=Switches::getAjaxAllSwitches();
fwrite($connect, self::encode($response));
}
}
_____________
Мой первый сайтик
Посмотри на свой XBMC под другим углом