<?php
require_once "php/_variables.php";
require_once "connectClass.php";
$getConnect = new getConnect();
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket,0,PORT);
socket_listen($socket); // Прослушивание соединения
socket_set_nonblock($socket); // Установка не блокирующего режима
$c_SocketArr = [$socket]; // Массив из ресурсов сокета
$null = NULL;
$c_DataArr = [];
while (true)
{
$newSocketArr = $c_SocketArr; // Новые ресурсы сокета
socket_select( $newSocketArr, $null, $null, 0, 10); // Наблюдение за подключением
// Содержиться ли ( сокет в массиве )
if( in_array( $socket, $newSocketArr ) )
{
$newSocket = socket_accept($socket); // Прием соединение
$c_SocketArr[] = $newSocket;
$header = socket_read( $newSocket, 1024 );
$getConnect::sendHeaders( $header, $newSocket, HOST, PORT ); // Рукопожатие ( клиент и сервер )
socket_getpeername( $newSocket, $c_ipAddress); // Получение данных клиента
$connect = $getConnect::newConnection( $c_ipAddress );
//$getConnect::send( $connect, $c_SocketArr );
unset( $newSocketArr[array_search( $socket, $newSocketArr )] );
}
foreach ( $newSocketArr as $newSocketArrResource ) {
// Обработка нового соединения
while ( socket_recv( $newSocketArrResource, $socketData, 1024, 0 ) >= 1 )
{
//echo $newSocketArrResource."\n";
$messageObj = json_decode( $getConnect::unseal( $socketData ) );
// Удаление похожих записей
foreach ( $c_DataArr as $iConnect => $cValue )
if( $cValue['id'] == $messageObj->id )
unset( $c_DataArr[$iConnect] );
// Массив с данными клиента
if( isset( $messageObj->id ) ) $c_DataArr[] = [ 'ip' => $c_ipAddress, 'resource' => $newSocketArrResource, 'id' => $messageObj->id ];
print_r($c_DataArr);
if( isset( $messageObj ) )
{
switch ($messageObj->message) {
case 'query':
echo 'query';
$q_connect = $getConnect::transactionProcessing( $messageObj->id, $messageObj->query );
//print_r($q_connect);
$message = $getConnect::createMessage( $q_connect );
$getConnect::send( $message, $c_SocketArr );
break;
default:
echo 'default';
$getConnect::customerReception( $messageObj->id, $messageObj->message );
//$message = $getConnect::createMessage( $messageObj->id, $messageObj->message );
//$getConnect::send( $message, $c_SocketArr );
break;
}
}
break 2;
}
// Соединение прервано
$socketData = @socket_read( $newSocketArrResource, 1024, PHP_NORMAL_READ );
if( $socketData === false )
{
socket_getpeername( $newSocketArrResource, $c_ipAddress); // Получение данных клиента
// Выявление нужного пользоватедя
foreach ( $c_DataArr as $key => $value )
if( $value['resource'] == $newSocketArrResource )
$i_client = $key;
//echo "Ресурс ".$newSocketArrResource."\n";
//echo "Клиент ".$i_client."\n";
//echo "Данные клиента ".$c_DataArr[$i_client]['id']."\n";
// Выполнение действий над пользователем
if( ( isset( $c_DataArr[$i_client]['id'] ) ) && $id = $c_DataArr[$i_client]['id'] )
$getConnect::customerFeedback( $id );
//$connect = $getConnect::newDisconected( $c_ipAddress );
//$getConnect::send( $connect, $c_SocketArr );
unset( $c_SocketArr[array_search( $newSocketArrResource, $c_SocketArr )] );
}
}
}
socket_close($socket);
#chat {
padding-bottom: 10px;
height: 100%;
font-size: 20px;
font-weight: normal;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.chat-main {
height: 100%;
margin: 0;
padding: 0;
overflow-y: auto;
overflow-x: hidden;
display: flex;
flex-direction: column-reverse;
}
var data = new FormData(),
url = 'http://ХХХХХХХХХХХ/php/active.php',
payload = { idClient: getCookie(iClient) };
data.append( "data", JSON.stringify(payload) );
fetch(url,
{
method: "POST",
body: data
})
.then(function(res){ return res.json(); })
.then(function(data){
response = JSON.parse(JSON.stringify( data ));
console.log(response['res']);
})
$data = json_decode($_POST['data'], true);
echo $result = json_encode( array(res => $data['idClient'] ) );
var data = new FormData(),
url = 'http://ХХХХХХХХХХХ/php/active.php',
payload = { idClient: getCookie(iClient) };
data.append( "data", JSON.stringify(payload) );
fetch(url,
{
method: "POST",
body: data
})
.then(function(res){ return res.json(); })
.then(function(data){
response = JSON.parse(JSON.stringify( data ));
console.log(response['res']);
})
$data = json_decode($_POST['data'], true);
echo $result = json_encode( array(res => $data['idClient'] ) );
А вы посмотрите в в сетевой вкладке браузера что реально уходит.- уходит то что нужно
И даже если бы оно как-то добавилось, я не вижу в пхп никаких попыток распарсить json- я методом POST ( $_POST['data']['idClient']; ) открываю в массиве нужное значение, по такому принципу у меня и файлы загружаются и переменные передаются в других скриптах