From 312a9187ceb13206795b16d05a0e2c6272f78803 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Tue, 21 Jun 2016 21:19:53 +0500 Subject: [PATCH] modifies for alpha-release --- LICENSE | 2 +- README.md | 4 ++- sample/index-wiki.php | 50 ++++++++++++++++++++++++++++++++++++ tests/TestEsocketsLinear.php | 42 ++++++++++++++++++++---------- 4 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 sample/index-wiki.php diff --git a/LICENSE b/LICENSE index 84db4f3..7634068 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 Ruslan +Copyright (c) 2015 Ruslan Yarullin maestroprog@gmail.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 208d909..1dbf51d 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,6 @@ Event-based sockets for php Sample for using Esockets in file sample/index.php ### Which PHP version is supported? -Supported PHP5.4 or higher version \ No newline at end of file +Supported PHP5.4 or higher version + +## Samples of use: [read the wiki](https://github.com/maestroprog/esockets-php/wiki) [https://github.com/maestroprog/esockets-php/wiki](https://github.com/maestroprog/esockets-php/wiki) \ No newline at end of file diff --git a/sample/index-wiki.php b/sample/index-wiki.php new file mode 100644 index 0000000..3eabc66 --- /dev/null +++ b/sample/index-wiki.php @@ -0,0 +1,50 @@ + AF_INET, // IPv4 протокол (при создании соединения используется TCP), можно изменить на AF_UNIX, если обмен данными будет происходит в пределах одной операционной системы + 'socket_address' => '127.0.0.1', // локальный IP адрес. для AF_UNIX соединения используется путь к файлу сокета + 'socket_port' => '8082', // прослушиваемый порт для входящих соединений (для AF_UNIX) + 'socket_reconnect' => false, // true для автоматического переподключения при обрыве соединения. +]; +$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 + */ + error_log('Получил сообщение от ' . $peer->getAddress() . ' ' . $msg . ' !'); + }); + // назначаем обработчик для отсоединения клиента от сервера. этот обработчик будет вызван при отсоединении клиента + $peer->onDisconnect(function () use ($peer) { + error_log('Клиент ' . $peer->getAddress() . ' отсоединился от сервера'); + }); +}); + +// прослушиваем входящие соединения +$server->listen(); // метод запускает обнаружение новых входящих соединений на сервере +$client->send('HELLO WORLD!'); // метод возвращает true в случае успешной отправки, иначе false + +$server->read(); \ No newline at end of file diff --git a/tests/TestEsocketsLinear.php b/tests/TestEsocketsLinear.php index fd75268..c6008ee 100644 --- a/tests/TestEsocketsLinear.php +++ b/tests/TestEsocketsLinear.php @@ -11,35 +11,51 @@ class TestEsockets extends \PHPUnit_Framework_TestCase { - /** - * @var $server \Esockets\Server - * @var $client \Esockets\Client - */ - private $server, $client; + /** @var Server */ + static private $server; + /** @var Client */ + static private $client; + /** @var int */ + static private $peer_accepted = 0; public function testServerOpen() { - $this->server = new \Esockets\Server(); - $this->assertTrue($this->server->connect(), 'Сервер не создаётся'); + self::$server = new Server(); + $this->assertTrue(self::$server->connect(), 'Сервер не создаётся'); } public function testClientConnect() { - $this->client = new \Esockets\Client(); - $this->assertTrue($this->client->connect(), 'Клиент не может соединиться'); + self::$client = new Client(); + $this->assertTrue(self::$client->connect(), 'Клиент не может соединиться'); } public function testServerAcceptClient() { - $this->server->onConnectPeer(function (\Esockets\Peer $peer) { - + self::$server->onConnectPeer(function (Peer $peer) { + self::$peer_accepted++; }); + self::$server->listen(); + } - $this->server->listen(); + public function testServerAcceptPeer() + { + $this->assertTrue(self::$peer_accepted > 0); } public function testClientSendData() { - $this->assertTrue($this->client->send('Hello world'), 'Клиент не может отправить данные'); + $this->assertTrue(self::$client->send('Hello world'), 'Клиент не может отправить данные'); + } + + public function testServerReceiveData() + { + //self::$server-> + } + + public function testClientDisconnect() + { + self::$client->disconnect(); + self::assertTrue(self::$client->is_connected()); } }