Esempio n. 1
0
$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!')) {
Esempio n. 2
0
/**
 * 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
         */
Esempio n. 3
0
    \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) {