Websocket, PHP a real-time komunikace

Po delší době jsem se rozhodl publikovat krátký článek, který se bude možná hodit těm, kdo vyvíjíte weby v PHP a chtěli byste na nich využít obousměrnou komunikaci přes websocket, což na běžných hostingových programech pro PHP projekty není úplně jednoduché.

Pokud programujete dlouhé roky v PHP, asi se vám nechce přecházet na jiné populární jazyky jen pro to, abyste nasadili do projektu novou funkcionalitu, jakou je real-time komunikace přes websocket. A ani to není potřeba, protože jsou řešení, která dokáží nedostatky PHP vyřešit.

Websocket jako služba (IaaS)

Řešením, jak nasadit websocket komunikaci na web v PHP, aniž byste se učili nové programovací jazyky nebo si instalovali vlastní virtuální server s podporou websocketů, je využití infrastruktury jako služby (insfrastructure as a service).

IaaS vám poskytne vše potřebné pro navázání a udržování otevřených websocket spojení s klienty, kteří mají aktuálně zobrazený váš web, nebo spuštěnou aplikaci. Můžete s nimi tedy komunikovat v reálném čase a odesílat klientům data do jejich zařízení, aniž by si o ně požádali, na rozdíl od klasického HTTP nebo AJAX požadavku.

Dost řečí, více činů, jdeme na to

Nemá smysl popisovat věci, které už někdo popsal. Pokud chcete víc informací, je dobré se podívat přímo na služby, a to hned od několika poskytovatelů. Hlavní parametry pro porovnání služeb jsou počet konkurenčních spojení (aktuálně připojených klientů) a počet i velikost zpráv odesílaných před websocket.

Služby pro real-time komunikaci přes websocket

  • WebSocket.cz – český projekt mého kamaráda, doporučuju zkusit
  • Mercure.rocks – Mercure real-time API and websocket communication
  • – Powering realtime experiences for mobile and web
  • – AWS WebSocket APIs in API Gateway
  • – Pie Socket WebSocket Servers

Poskytovatelů websocket IaaS je samozřejmě víc, včetně cloudů jako Google, Azure a další. Stačí pohledat na google výrazy jako “websocket IaaS”, “rest API to websocket” a pod. Snad vám podobné služby usnadní integraci websocketů do projektů v PHP, které se vám nechce přepisovat, protože jinak fungují pěkně.

Nový layout

Vím, němělo by se to zakřiknout. Nicméně se musím pochlubit s tím, že se již brzy plánuje úplně nový layout pro můj log.
A tento miničlánek má poukazovat ne něco jiného, interního. Jasně, je to alegorie jak vyšitá 🙂

Takže zatím děkuji Aničce a Zdenkovy a těšme se 🙂

Cachování souborů přenášených přes HTTP

Tento článek popisuje nastavení HTTP cacheování, které je primárně určeno ke snížení zátěže databázových serverů snížením požadavků z origin serverů, tedy strojů s HTTP daemonem, zachycením cacheovatelných objektů na web cache serverech, které stojí mezi orginy a klienty (klient->web cache->origin->db)

Web cache servery(Varnish,Squid,Apache Traffic Server) respektují HTTP protokol a tudíž své cacheování řídí HTTP hlavičkamy, které dostanou od aplikace(na origin serveru).

Poznatky o “správnosti HTTP hlaviček” :

  • Pragma: no-cache – poměrně pofidérní hlavička, která není plně podporována, ale pro HTTP/1.0 je to nejspíš jediná možnost
  • Expires – hlavička podporovaná “téměř všemi HTTP klienty” – velmi použitelná a neměla by být(dle RFC) nastavena na datum větší než rok v budoucnosti. Obsah hlavičky je GMT čas
  • Cache-Control – Cache-Control rozšiřuje možnosti hlavičky expires a má tyto možnosti :

Zastaven vývoj kwick.sysu

Včerejším dnem jsem zastavil vývoj mého CMS – kwick.sys

Stalo se tak, protože jsem se dostal k práci v jiném, leč ne příliš vzdáleném oboru.

Stop vývoje neznamená, že jsem smazal repositář, všechnu dokumentaci a spálil všechny mosty. Pouze jsem potřeboval tento projekt “vyjmout z mé hlavy a odložit na později”. Projekt si tedy bude hledat čas, kdy se rozhodnu jak jej nejlépe využít. PHP pro mě není zatím úplně uzavřená kapitola, tudíž kwick možná časem využiji opět k tomu, k čemu sloužil nejlépe – k výuce PHP světa, možná také ne.

Oprava cookies pro obrázek hlavičky

Čtenáři, kteří již někdy vyzkoušeli formulářové políčko vlevo nahoře určitě vědí, že si tak mohou vybrat ze tří nemálo úchylných hlaviček tohoto webu.

Ti, kteří to zkusili v poslední době taky vědí, že špatným nastavením se to týkalo pouze konkrétní stránky webu( např. jen v guestbooku, nebo jen na určitém článku). Tento problém jsem dnes vyřešil, takže nastavení funguje pro celý web jak bylo původně zamýšleno 🙂

Takže třikrát hurá a zkuste třeba paroubcka 😀

Pánové ze Seznamu mají rozbité klávesnice?

Nejdřív jsem si říkal, že to byl můj překlep, ale když jsem si zpětně přečetl email od firmy.cz(nebo také odkazy.seznam.cz), tak jsem přišel na to, že v seznamu mají asi polámané klávesnice, nebo personál :

Zažádal jsem si o následující odkaz :

URL: http://www.arteal.name
Titulek: Hi, my .name is Arteal!
Popisek: Weblog webdesignového a Arch Linuxového nadšence. Články z prostředí PHP,XHTML,CSS,MySQL

zkopírováno z mailu od Seznamu

Ale v druhém mailu se dozvídáme toto:

odkaz na stránku s URL: http://www.arteal.name
byl přidán do katalogu Seznam.cz v této podobě:
URL: http://www.arteal.name
Titulek: Arteap
Popisek: Weblog pd webdesignového a Arch Linuxového nadšence. Články z prostředí PHP, XHTML, CSS, MySQL.
Kategorie:

Přikládám i odkaz na screenshot

Asi by personál Seznamu měl pít více kávy

Kdo/co je dweeb?

Pro svůj nový modul do kwick.sysu – sitemap jsem zrovna googloval HTML syntaxi pro seznamy(ul,ol,…) a narazil jsem na krásný příklad, který mě více než svou technickou přínosností pobavil svým obsahem, aneb who is dweeb,hacker and nerd :

Dweeb: young excitable person who may mature into a Nerd or Geek

Hacker: a clever programmer

Nerd: technically bright but socially inept person

blowfly.eu

Tak dneska jsem spustil testovací verzi webu blowfly.eu – zatím pouze odkazy na hostované projekty, což jsou zatím víceméně jen blogy.
Vím, není se čím chlubit… Ale tenhle miničlánek má jiný, skrytý význam 😉

No tak když jsem si všiml, že tento příspěvek z donucení je jubilejní, stý…

Tak se přiznám, že jsem ho musel zplodit protože jsem měl bug v Atom feedu a měl jsem tam staré adresy článku(na domácí doméně work.arteal.name). Proto jsem musel vytvořit článek, aby se feed obnovil 🙂
Ano a jelikož jsem tam měl špatné adresy, ze kterých se dělá uuid, tak se vám teď všechno bude ve čtečce tvářit nejspíš jako nové zprávy 🙁