Skip to content

Commit

Permalink
modifies for alpha-release
Browse files Browse the repository at this point in the history
  • Loading branch information
Ruslan committed Jun 21, 2016
1 parent cad0b2d commit 312a918
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 15 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
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)
50 changes: 50 additions & 0 deletions sample/index-wiki.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php
/**
* Created by PhpStorm.
* User: yarullin
* Date: 21.06.2016
* Time: 21:13
*/

require_once '../autoload.php';

// массив конфигурации общий для сервера и клиента, все опции в конфигурации указаны по умолчанию
$config = [
'socket_domain' => 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();
42 changes: 29 additions & 13 deletions tests/TestEsocketsLinear.php
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}

0 comments on commit 312a918

Please sign in to comment.