• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Websocket
 

Websocket

on

  • 650 views

 

Statistics

Views

Total Views
650
Views on SlideShare
650
Embed Views
0

Actions

Likes
0
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Websocket Websocket Presentation Transcript

    • Javabár2013. január 10.
    • HTTP/1.1 101 Switching ProtocolsUpgrade: websocket HTML5 Messaging Radics László laszlo.radics@drotposta.hu Javabár 2013. Január 10.
    • Cél✓ Kliens – szerver kommunikáció ✓ (kliens: HTML oldal, JavaScript, böngésző)✓ Kliens – kliens kommunikáció✓ Egyirányú, kétirányú, aszinkron, biztonságos legyen✓ Korai technológiáktól WebSocketig
    • Az előadás menete✓ Történeti áttekintés✓ Comet✓ Server-sent events✓ WebSocket✓ Same origin policy✓ További HTML5 üzenetküldéses API-k ✓ Web messaging ✓ Webworkers
    • Ki programozott már...✓ AJAX-ot✓ Cometet✓ Websocketet
    • Kommunikáció fejlődése✓ Statikus oldalak✓ Refresh (<META> vagy JavaScript)✓ Ajax ← aszinkron poll✓ Comet (gyűjtőfogalom) ← push✓ Server-sent events ← HTML5✓ WebSocket ← A király
    • AJAX és Comet
    • Comet módszerek✓ XMLHttpRequest✓ Script ✓ Polling ✓ Streaming
    • Üzenetküldések
    • HTTP Overhead ?
    • HTTP Overhead 800 – 2000 byte Most: 2273
    • Comet?✓ Működik! ✓ Szálkezelés szerver és kliens oldalon ✓ Hatalmas HTTP overhead ✓ Biztonsági problémák ✓ Bonyolult hackek, nincs szabvány
    • 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
    • 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)
    • Böngésző támogatottság✓ caniuse.com
    • WebSocket - JavaScript
    • WebSocket - Java✓ JSR 356 majd ✓ Külön keretrendszerek✓ Servlet 3.1 majd ✓ Atmosphere✓ Nem szabványos API-k ✓ CometD ✓ Jetty ✓ Kaazing ✓ Tomcat ✓ JMS API-n keresztül ✓ Grizzly ✓ Kaazing ✓ Apache ActiveMQ, Apollo ...
    • Mi volt az előadás címe?
    • HTTP/1.1 101 Switching ProtocolsUpgrade: websocket HTML5 Messaging Radics László laszlo.radics@drotposta.hu Javabár 2013. Január 10.
    • WebSocket HandshakeGET /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Origin: http://example.comSec-WebSocket-Protocol: chat, superchat
    • WebSocket HandshakeHTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzhZRbK+xOo=Sec-WebSocket-Protocol: chat
    • WebSocket Keretek✓ Rövid fejléc✓ Az adat lehet szöveges (UTF-8) vagy bináris✓ A kliens által küldött keretek maszkolva vannak (XOR)
    • Keretek megfigyelése
    • WebSocket Subprotocols✓ Stomp ✓ XMPP, AMPQ ✓ Apache ActiveMQ ✓ Kaazing ✓ Apache Apollo ✓ Wamp ✓ HornetQ ✓ http://wamp.ws/ ✓ RabbitMQ ✓ Kaazing
    • 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á
    • 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á
    • 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
    • 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
    • A megoldás: CORS ✓ Cross Origin Resource Sharing ✓ Origin: header a kérésben ✓ Preflight, pl. ha nem GET/POST ✓ file:// problémaREQUEST:Origin:http://localhost2:9080RESPONSE:Access-Control-Allow-Origin:http://localhost2:9080
    • Web Messaging✓ Cross-document messaging✓ Channel
    • Web Workers FőszálJómunkás
    • Esettanulmány: Pong ✓ Szerver ActiveMQ + Kaazing ✓ Csak kliens oldali JavaScript kód ✓ Két szerver egy Magyarországon, egy Amerikában
    • Interkontinentális játék
    • 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
    • A „csalás”✓ Szinkronizáció csak ütközéskor
    • Önkorlátozás✓ Nagy érzékenységű távirányító✓ Sürű események✓ Lehet interpolálni a végpontból✓ Üzenet eldobás
    • Köszönöm Kérdések?laszlo.radics@drotposta.hu