$server->onConnectPeer(function ($peer) { /** * @var $peer \Esockets\Peer */ error_log(' Принял ' . $peer->getAddress() . ' !'); $peer->onRead(function ($msg) use($peer) { /** * @var $this \Esockets\Peer */ error_log(' Получил от ' . $peer->getAddress() . $msg . ' !'); }); $peer->onDisconnect(function () use($peer) { error_log('Чувак ' . $peer->getAddress() . ' отсоединиляс от сервера'); }); }); $client = new Esockets\Client(); if ($client->connect()) { error_log('успешно соединился!'); } $client->onDisconnect(function () { error_log('Меня отсоединили или я сам отсоединился!'); }); $client->onRead(function ($msg) { error_log('Получил что то: ' . $msg . ' !'); }); $work = new \Esockets\WorkManager(); $work->addWork('serverAccept', [$server, 'listen'], [], ['always' => true, 'interval' => 5000]); $work->addWork('serverReceive', [$server, 'read'], [], ['always' => true, 'interval' => 1000]); $work->addWork('clientReceive', [$client, 'read'], [], ['always' => true, 'interval' => 1000]); $work->execWork(); if ($client->send('HELLO WORLD!')) {
/** * Created by PhpStorm. * User: yarullin * Date: 21.06.2016 * Time: 21:13 */ require_once '../autoload.php'; // массив конфигурации общий для сервера и клиента, все опции в конфигурации указаны по умолчанию $config = ['socket_domain' => AF_INET, 'socket_address' => '127.0.0.1', 'socket_port' => '8082', 'socket_reconnect' => false]; $server = new \Esockets\Server($config); if (!$server->connect()) { echo 'Не удалось запустить сервер!'; exit; } $client = new Esockets\Client($config); // передаем конфигурацию, такую же, как для сервера if ($client->connect()) { error_log('успешно соединился!'); } // назначаем обработчик для новых входящих соединений. при соединении клиента к серверу будет вызван переданный обработчик $server->onConnectPeer(function ($peer) { /** * @var $peer \Esockets\Peer */ error_log('Принял входящее соединение ' . $peer->getAddress() . ' !'); // назначаем обработчик для чтения данных от присоединившегося клиента. при получении данных от подключенного клиента будет вызван переданный обработчик $peer->onRead(function ($msg) use($peer) { /** * @var $this \Esockets\Peer */
\Esockets\error_log('Меня отсоединили или я сам отсоединился!'); }); $client->onReceive(function ($msg) { \Esockets\error_log('Получил что то: ' . $msg . ' !'); }); // симулируем увеличение нагрузки for ($i = 1; $i > 0; $i--) { $client->ping(); usleep($i * 10000); } $client->close(); unset($client); // симулируем множество клиентов $clients = array(); for ($i = 0; $i < 1; $i++) { $client = new Esockets\Client(); if ($client->connect()) { \Esockets\error_log('успешно соединился!'); } $client->onDisconnect(function () { \Esockets\error_log('Меня отсоединили или я сам отсоединился!'); }); $client->onReceive(function ($msg) { \Esockets\error_log('Получил что то: ' . $msg . ' !'); }); $clients[$i] = $client; usleep(100000); } // симулируем большой трафик for ($i = 0; $i < 1; $i++) { foreach ($clients as $j => $client) {