Пример #1
0
 /**
  * Create server
  *  - bind to port
  *  - listen port
  * @throws ListenException
  * @throws BindException
  */
 function create($blocking = true)
 {
     $this->open();
     $serverSocket = $this->getSocketResource();
     if (!socket_bind($serverSocket, $this->getIp(), $this->getPort())) {
         throw new BindException($this);
     }
     $this->getEventDispatcher()->dispatch(BindEvent::getEventName(), new BindEvent($this, $this));
     if (!socket_listen($serverSocket)) {
         throw new ListenException($this);
     }
     if ($blocking) {
         socket_set_block($serverSocket);
     } else {
         socket_set_nonblock($serverSocket);
     }
     $this->start();
     while ($this->running) {
         $clientSocket = socket_accept($serverSocket);
         if (false == $clientSocket) {
             continue;
         }
         $socket = new Socket($this->getAddressType(), $this->getSocketType(), $this->getTransport(), $this->getEventDispatcher());
         $socket->setSocketResource($clientSocket);
         $socket->getEventDispatcher()->dispatch(NewConnectionEvent::getEventName(), new NewConnectionEvent($socket, $this));
     }
 }
Пример #2
0
use Aysheka\Socket\Client\Event\ConnectEvent;
use Aysheka\Socket\Server\Event\BindEvent;
use Aysheka\Socket\Event\IO\ReadEvent;
use Aysheka\Socket\Event\IO\WriteEvent;
use Aysheka\Socket\Client\Client;
$eventDispatcher = new EventDispatcher();
$eventDispatcher->addListener(OpenEvent::getEventName(), function (OpenEvent $event) {
    echo "Open\n";
});
$eventDispatcher->addListener(CloseEvent::getEventName(), function (CloseEvent $event) {
    echo "Close\n";
});
$eventDispatcher->addListener(ConnectEvent::getEventName(), function (ConnectEvent $event) {
    echo "Connect\n";
});
$eventDispatcher->addListener(BindEvent::getEventName(), function (BindEvent $event) {
    echo "Bind\n";
});
$eventDispatcher->addListener(ReadEvent::getEventName(), function (ReadEvent $event) {
    echo "Read: " . trim($event->getData()) . "\n";
});
$eventDispatcher->addListener(WriteEvent::getEventName(), function (WriteEvent $event) {
    echo "Write: " . trim($event->getData()) . "\n";
});
$client = new Client('127.0.0.1', 8089, new \Aysheka\Socket\Address\IP4(), new \Aysheka\Socket\Type\Stream(), new \Aysheka\Socket\Transport\TCP(), $eventDispatcher);
$client->connect();
$client->read();
$client->write('Request');
$client->read();
$client->write('RcrdXL3qR772VTVfVEWrDuJnGLsv9cswV9Vg2YE3Gj2DKtVgbvephpgenHpCrFOoAxNhzCKAHP09PQNDJ8p4enKmjB2CKGOixU4EdTp4KL7MzmoTW0ePzd7uydEXTOFLwA1AE4YnuGS5wQrKeKryFfZLB6IeFe5WJIHmkOklr06aiRdbvqda3HM2vtuoEJS5X1glHUiIFE6NcHMLvdpIu01dvpCJc6z8Kl9ar6XfDUxKsxTyXzeBlFs8ZYPzeTtjjQM6KZVlE3YmzLt65fG1foFE6rGAB4472CGJqSZWHwJEkLqqaNaUPviweJfLV1DerJtG7BayhNwF3z2hxaZvz4Mb6Nf1QwZ7GmXw3smwfBes1jgb8qQMLyplGqXxoHQD5Ay1HB8LSVRwLJ6Jbe9HkgshxH3i2TAZEFhaksBUlZ3SFsTXBHijHnoeAlo3nshl4TvB60V6h9w7LqKhsn5Q4ZDHEdDj5daOrpKb3bjY1DUvJpfYGjlhxBY26Pcy4yMC9Z6GorPsquiuJjZZ7Sh3PTkOm8PzalTBNHtm28jBSCLYwYgcDHRNFQjRZA8b3iyo2u7En1OswgtnMiBeZdPGCm4d9H7EioFQ7ifRhqwlKDZ06kXcLvpeDBEvJJXnRMj7yJZsGBoHPQpm5zsF4TLjY4IeyJ3OoO54priA60TLflyGgmqk1KpPhMQjwSpphf4sbKx0lfN9XDgYrewgnGPcbteT7aPmvoIiGsvZpD9GyleQdzy0Vw0T9V4XWC2KZekpqfaM3x1n5Pf3X18Qc929EQZrV2TYYwWWLYVOLXpo476ho7AGSEsRJWWtMyO8s9sPBr7bSAe5tmbXUhVctOlXiBWyniKuqgC91IcJDOIUflVC6zC3tHIl2djhVAAjpkabLREkvHFwACJFxDvcH6Imf8osYahiU5fBbdVFf7X9zGOHtPZPb7AD3OFhFkSADQbecrxlKS5c41iI4g6tUW5GjfqV4zFecGEjO4ogXGUKX3grrSXVVPqi9TcJ3bEfrjSxbOq88zCP4J3X2xFeuOHRBgpL9gebsSuYqw4LhMicDTj1lc4R8E9mnOJgguPI0kb9EFhnYkzE0UBBBZ4MEGJP1EBVEGLCxPHBuzPkzbV3KQk3GIO2n0fHpkg0pXIuBSOkjzepTjaJuKjh1FK9DHWqE4ZcTlFNtVc1EpGjxLGG3lhmMW5evHUL6d6R9LavaT9il2EyZB8JFp5HRaiZERmqRl6okrYA13mBHmhdrkmGOqfEMYeSU4UOJrlkpYenYavvPFm9vteAaUlEhNyBOT1Zs4C0Vb75I9rOsYqv4GFpDbHCIiwGFstC3Z7Cj6akAiYnA4yO2canylRX693ejWsJGjORx8xCya2OkCQrT7NL2kIouulYBkpjfy1MmiDEMJEMp1ogyL7nt6jeCOBKVcszwXGWxSFGK61SqMV9qTkyv5zNLY88K5XQEHk286PSgqnoGLd0UiA0L84Yvnlp1ZM63UugZy9wSSHAYznUo3jAH3oZDLCfss96DbsylfUMAfowmaA421EwMRJjpOk1LuSio8iauzbZMOlKsMDrbWwkpSCks4zvLhfdEvbQOzZiv8NJGuj4AQgAccyxslvXd4V9LSVUvGsvJO8leRClOeWLuQiifyzd1Et3k37m62cYKnBVWk7nPKSonRY2bHhiHjrZYI37dK9mGc11EUn7gB4gPFIh34hwrDNCeUIDBkjKh6OUPlWNz6aAyq58LUSp5gWyCmlsKCjzA4KaNSEGIy7anPdOk4o7oEVvncKEif6858nVsfiJakzpVFXVqSw8lSqjlpUJMjNyQMfDzQuijEVfTY1HWIGKnYmJSeD3TDB4DJ0x3S1R32XpovoyJPauliGsKzfJkhiMI9T5cIV9sdIZaZTVyHuUA3TlPjPqNxj3307gVo7EyEThPU9bMUTgq0sPdZPmghy9WDxxIyRlSkefybrHkb1JZyWWsvBBuBkKSTUfHpuIHO5X4wf2em2AkAo72upWLtcwkF3bVxgIfqDpOLj34LvnSvXTXN50hKFSNDRL');
$client->read();