PHP code example of edefimov / async-sockets
1. Go to this page and download the library: Download edefimov/async-sockets library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
edefimov / async-sockets example snippets
$factory = new AsyncSocketFactory();
$client = $factory->createSocket(AsyncSocketFactory::SOCKET_CLIENT);
$anotherClient = $factory->createSocket(AsyncSocketFactory::SOCKET_CLIENT);
$executor = $factory->createRequestExecutor();
$handler = new CallbackEventHandler(
[
EventType::INITIALIZE => [$this, 'onInitialize'],
EventType::CONNECTED => [$this, 'onConnected'],
EventType::WRITE => [$this, 'onWrite'],
EventType::READ => [$this, 'onRead'],
EventType::ACCEPT => [$this, 'onAccept'],
EventType::DATA_ALERT => [$this, 'onDataAlert'],
EventType::DISCONNECTED => [$this, 'onDisconnected'],
EventType::FINALIZE => [$this, 'onFinalize'],
EventType::EXCEPTION => [$this, 'onException'],
EventType::TIMEOUT => [$this, 'onTimeout'],
]
);
$executor->socketBag()->addSocket(
$client,
new WriteOperation(),
[
RequestExecutorInterface::META_ADDRESS => 'tls://github.com:443',
RequestExecutorInterface::META_CONNECTION_TIMEOUT => 30,
RequestExecutorInterface::META_IO_TIMEOUT => 5,
],
$handler
);
$executor->socketBag()->addSocket(
$anotherClient,
new WriteOperation(),
[
RequestExecutorInterface::META_ADDRESS => 'tls://packagist.org:443',
RequestExecutorInterface::META_CONNECTION_TIMEOUT => 10,
RequestExecutorInterface::META_IO_TIMEOUT => 2,
],
$handler
);
$executor->executeRequest();
$factory = new AsyncSocketFactory();
$client = $factory->createSocket(AsyncSocketFactory::SOCKET_CLIENT);
$anotherClient = $factory->createSocket(AsyncSocketFactory::SOCKET_CLIENT);
$executor = $factory->createRequestExecutor();
$handler = new CallbackEventHandler(
[
EventType::INITIALIZE => [$this, 'onInitialize'],
EventType::CONNECTED => [$this, 'onConnected'],
EventType::WRITE => [$this, 'onWrite'],
EventType::READ => [$this, 'onRead'],
EventType::DISCONNECTED => [$this, 'onDisconnected'],
EventType::FINALIZE => [$this, 'onFinalize'],
EventType::EXCEPTION => [$this, 'onException'],
EventType::TIMEOUT => [$this, 'onTimeout'],
]
);
$executor->socketBag()->addSocket(
$client,
new WriteOperation(),
[
RequestExecutorInterface::META_ADDRESS => 'tls://github.com:443',
RequestExecutorInterface::META_CONNECTION_TIMEOUT => 30,
RequestExecutorInterface::META_IO_TIMEOUT => 5,
],
$handler
);
$executor->socketBag()->addSocket(
$anotherClient,
new WriteOperation(),
[
RequestExecutorInterface::META_ADDRESS => 'tls://packagist.org:443',
RequestExecutorInterface::META_CONNECTION_TIMEOUT => 10,
RequestExecutorInterface::META_IO_TIMEOUT => 2,
],
$handler
);
$executor->executeRequest();
$factory = new AsyncSocketFactory();
$serverSocket = $factory->createSocket(AsyncSocketFactory::SOCKET_SERVER);
$executor = $factory->createRequestExecutor();
$executor->socketBag()->addSocket(
$serverSocket,
new ReadOperation(),
[
RequestExecutorInterface::META_ADDRESS => "tcp://localhost:10280", // or "udp://localhost:10280"
RequestExecutorInterface::META_CONNECTION_TIMEOUT => RequestExecutorInterface::WAIT_FOREVER,
RequestExecutorInterface::META_IO_TIMEOUT => RequestExecutorInterface::WAIT_FOREVER,
],
new CallbackEventHandler(
[
EventType::ACCEPT => function (AcceptEvent $event){
$event->getExecutor()->socketBag()->addSocket(
$event->getClientSocket(),
new ReadOperation(),
[ ],
// client handlers
);
}
]
)
);
$executor->executeRequest();