Websockety přicházejí do Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
akadlec
Člen | 1326
+
+18
-

Pokud někdo z vás již narazil na potřebu používat websockety v nette, zjistil určitě že je to docela oser :D. Protože jsem se k tomuto problému taky dostal, rozhodl jsem se své řešení vystavit i pro ostatní.

Celé řešení původně vycházelo z docela oblibeného balíčku ratchetphp nicméně po hlubším prozkoumání jak tento balík funguje, se mě přestal líbit. Jeden z důvodů byl taky ten že je až moc symfoní a v aktuální verzi využívá hodně staré knihovny.

Vydal jsem se tedy vlastní cestou a vytvořil soubor balíků pro snadnou integraci websocketů pro Nette projekty.

# ipub/websockets

je základní jádro celého serveru. Definuje základní parametry serveru a integruje jeho konzolové rozhraní

# ipub/websockets-wamp

je integrace WAMPového protokolu pro websockety. Doplní základní jádro o aplikaci vytvářející WAMP server. Přináší taky základní integraci JS klienta Autobahn

# ipub/websockets-session

a pomocí tohoto balíčků se dá integrovat session, takže pak v jednotlivých akcích je k dispozici session uživatele a dokonce i user context

# ipub/websockets-zmq

Pokud potřebujete klientům posílat data i z míst mimo websocketový server, tak k tomu slouží ZeroMQ. Jednoduše si stačí dopravi Pushera třeba do vašeho presenteru a poslat data do vybraného topicu. Consumer se pak sám postará o to aby byla data doručena.

Celé řešení je zatím v testovacím provozu, takže pokud někdo narazí na chybu, tak klidně reportovat, případně udělat PR apod.

chemix
Nette Core | 1296
+
+11
-

Co prednaska nebo rovnou workshop na planovanou posledni sobotu v breznu v Praze? :)

srigi
Nette Blogger | 558
+
0
-

Je tam nejaka podpora pre Kdyby/RabbitMQ alebo jakubkulhan/bunny? Podpora zmq je fajn, ale rabbit je predsalen popularnejsie riesenie.

Editoval srigi (7. 3. 2017 11:46)

akadlec
Člen | 1326
+
+1
-

@srigi no teoreticky by to neměl být problém. Když se podíváš na implementaci ZeroMQ tak pokud tohle dokážeš udělat přes rabbita. Princip je v tom že musíš udělat „Pusher“ a „Consumer“. To je vše.

Jinak ZeroMQ bych neviděl jako nepopulární, je založen na reactphp a jeho integrace je hodně jednoduchá.

Mortisson
Člen | 21
+
0
-

Interface ‚IPub\WebSockets\Logger\Formatter\IFormatter‘ not found

Špatně pojmenovaný interface soubor. V názvu souboru mají být dvě t.

akadlec
Člen | 1326
+
0
-

Nice catch. Asi se mě rozhasila dev verze vs server. Každopádně fixnuto. Příště klidně rovnou PR