13. Comet?
✓ Működik! ✓ Szálkezelés szerver és
kliens oldalon
✓ Hatalmas HTTP
overhead
✓ Biztonsági problémák
✓ Bonyolult hackek, nincs
szabvány
14. Server-sent events
✓ Tulajdonképpen a Comet szabvánnyá előléptetése
✓ Egyirányú kapcsolat
✓ Saját szöveg alapú protokollja van
✓ A böngésző kezeli a pollingot, szakadás esetén
újraépíti a kapcsolatot
15. WebSocket
✓ TCP alapú
✓ Full-duplex
✓ Alacsony overhead
✓ HTTP-vel osztozhat a (80/443) porton
✓ Szöveges és bináris
✓ W3C API (JavaScript)
✓ IETF Protocol (RFC 6455)
28. Same origin policy
✓ Böngészőbe épített biztonsági feature
✓ Csak azonos forrásra kapcsolódhat
✓
✓ Csak azonos oldalról letöltött
tartalomhoz férhet hozzá
29. De mi számít azonosnak?
✓ Böngészőbe épített biztonsági feature
✓ Csak azonos forrásra kapcsolódhat
✓
✓ Csak azonos oldalról letöltött
tartalomhoz férhet hozzá
30. Azonos forrás
http://example.com ✓ Különböző
✓ Azonos: ✓ http://www.example.com
✓ http://example.com/ ✓ http://example.org
✓ http://example.com/my/page.html ✓ https://example.com
✓ http://example.com:8080
31. A probléma
✓ A szerver és a kliens valóban kommunikálni szeretne
✓ Hackek (document.domain, window.name,
egymásba ágyazott iframek, url hash change)
✓ JSONP (JSON with padding)
✓ best practice
✓ de támogatottsága gyenge
✓ csak GET
32. A megoldás: CORS
✓ Cross Origin Resource Sharing
✓ 'Origin:' header a kérésben
✓ Preflight, pl. ha nem GET/POST
✓ 'file://' probléma
REQUEST:
Origin:http://localhost2:9080
RESPONSE:
Access-Control-Allow-Origin:http://localhost2:9080
37. Sebesség
✓ Sokkal lassabb üzenetküldés
✓ Hálózat késleltetése miatt
✓ A MQ késleltetése miatt
✓ ACK csomagok miatt
✓ Egy szálon futott a JavaScript
✓ Kliens - kliens
✓ Kb. max 40 msg/sec