PHPackages                             adt/ratchet - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. adt/ratchet

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

adt/ratchet
===========

Library for Ratchet IO server with Nette

v1.0(10y ago)017BSD-3-ClausePHPPHP &gt;= 5.3.9

Since Oct 2Pushed 8y ago11 watchersCompare

[ Source](https://github.com/AppsDevTeam/ratchet)[ Packagist](https://packagist.org/packages/adt/ratchet)[ RSS](/packages/adt-ratchet/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (4)Versions (2)Used By (0)

Nette Ratchet extension
=======================

[](#nette-ratchet-extension)

Implementace websocketového serveru Ratchet , do Nette.

Vlastnosti
----------

[](#vlastnosti)

1. Tvorba `Component` stejně jako v Ratchetu, ale s využitím všech pohodlných věcí z Nette
2. Oddělení Vaších aplikací pomocí routování
3. Běh více aplikací na jednom serveru
4. Vytvoření více oddělených instancí stejné aplikace

Instalace rozšíření
-------------------

[](#instalace-rozšíření)

1. Stažení přes composer: **adt/ratchet**
2. Připojení DI rozšíření **ADT\\Ratchet\\DI\\RatchetExtension**

Jak to celé funguje
-------------------

[](#jak-to-celé-funguje)

Serverová část
--------------

[](#serverová-část)

Implementace serverové části v `server.php` se velmi podobá souboru `index.php`:

```
$container = require __DIR__ . '/../private/app/bootstrap.php';
$container->getByType('ADT\Ratchet\Server')->run();

```

Spuštění serveru:

```
php web/server.php

```

Controller
----------

[](#controller)

Každá naše aplikace, kterou chceme vytvořit, se nazývá `Controller`. Každý `Controller` implementuje některé z rozhraní `Ratchet\ComponentInterface` (stejně jako kterákoliv Ratchet `Component`a).

Router
------

[](#router)

K oddělení jednotlivých aplikací slouží `ADT\Ratchet\Components\Router`. Routy lze zadávat pohodlně v neonu:

```
ratchet:
    routes:
    	'/kittenSubscriber': @\App\RatchetModule\Controllers\IKittenControllerFactory

        # nebo podrobně
    	'/kittenSubscriber':
    		controller: @\App\RatchetModule\Controllers\IKittenControllerFactory
    		httpHost: NULL
    		instantionResolver: @\App\RatchetModule\Controllers\InstantionResolver

```

Základ routy tvoří dvojice `path`-`controller`. `Controller` lze zadat buď přímo jako servisu a nebo jako továrničku implementující funkci `create()`.

Zadáním `httpHost` specifikujeme konkrétní doménu, pro kterou bude routa fungovat.

V některých případech chceme pro každou ze skupin uživatelů vytvořit vlastní instanci `Controller`u. Příkladem může být běh stejné aplikace pro více subdomén. Pohodlnějším způsobem, než vše v každém `Controller`u ošetřovat, je využití parametru `instantionResolver`. Parametrem je třída implementující rozhraní `ADT\Ratchet\Controllers\IInstantionResolver`. Nejlepší bude ukázat příklad. Následující implementace `InstantionResolver`u provede to, že se pro každou ze subdomén vytvoří (samozřejmě lazy) vlastní instance `Controller`u:

```
