Download the PHP package adt/ratchet without Composer
On this page you can find all versions of the php package adt/ratchet. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package ratchet
Short Description Library for Ratchet IO server with Nette
License BSD-3-Clause GPL-2.0 GPL-3.0
Informations about the package ratchet
Nette Ratchet extension
Implementace websocketového serveru Ratchet http://socketo.me, do Nette.
Vlastnosti
- Tvorba
Component
stejně jako v Ratchetu, ale s využitím všech pohodlných věcí z Nette - Oddělení Vaších aplikací pomocí routování
- Běh více aplikací na jednom serveru
- Vytvoření více oddělených instancí stejné aplikace
Instalace rozšíření
- Stažení přes composer: adt/ratchet
- Připojení DI rozšíření ADT\Ratchet\DI\RatchetExtension
Jak to celé funguje
Serverová část
Implementace serverové části v server.php
se velmi podobá souboru index.php
:
Spuštění serveru:
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
K oddělení jednotlivých aplikací slouží ADT\Ratchet\Components\Router
. Routy lze zadávat pohodlně v neonu:
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:
Integrace do existující aplikace
TODO: ZMQ model
Debugování
TODO: ADT\Dumper, vytvořit Debug Componentu, ke které by se přihlásil jeden uživatel a na ten by se odesílal všechen výstup (subscribe k _debug)?
TODOs
- Přidat do configu možnost
autoDestroy
: pokud je Controller dynamicky vytvořen a všichni uživatelé se odpojili, smaž imstanci Controlleru. - Benchmark: Porovnat NodeJS a Ratchet. Rychlost odezvy na jeden jediný request (pokud oboje je 1ms, tak neřešit, ale pokud je jedno z nich 200ms a druhý 1ms, tak je to špaténka). Odezva je v 99% 1-2ms (s tím, že se tam započítává nejspíš i nějaký JS balast).
- Chci naše controllery odstínit od toho, aby si museli rozdělovat všechno na subdomény. Pokud se někdo připojí ke konkrétní subdoméně, nemůže komunikovat s nikým jiným. Každý prohlížeč se však může připojit ke všem controllerům své subdomény a také ke všem controllerům domény. Controller nebude řešit subdomény a bude počítat s tím, že se k němu request z jiné subodmény nedostane => toto je třeba řešit v nižších vrstvách.
-
Router by neměl dostávat přímo Controller, ale továrnu, která se na základě parametrů (v mém případě subdomény) rozhodna zda vytvořit nový Controller a nebo zda vrátit existující, pokud pro subdoménuexistuje.
-
Routa:
- Path
- Controller class name
- Callback, který z parametrů routy vrátí jednoznačný identifikátor
- odstínit RatchetModel (resp. ZMQ\Context v LockControlleru) od kontroly subdomény
Poděkování
Projekt volně navazuje na nedokončený frosty22/ratchet. Děkujeme za inspiraci.
All versions of ratchet with dependencies
nette/nette Version 2.*
cboden/ratchet Version 0.3.*
react/zmq Version 0.2.*|0.3.*
symfony/http-foundation Version 2.5.5