stay connected mobile pushing apps mit websockets alexander schulze predrag stojadinovic

Download Stay Connected Mobile  Pushing Apps  mit WebSockets Alexander Schulze Predrag Stojadinovic

If you can't read please download the document

Post on 09-Jan-2016

41 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Stay Connected Mobile Pushing Apps mit WebSockets Alexander Schulze Predrag Stojadinovic. jWebSocket – Open Source Cross-Browser/Cross-Platform WebSocket Solution. Die heutige Session. Agenda Kommunikation mit WebSockets Wo, Was, Warum, Wie, Wohin WebSocket Server und Browser Client - PowerPoint PPT Presentation

TRANSCRIPT

  • Stay ConnectedMobile Pushing Apps mit WebSockets

    Alexander Schulze Predrag StojadinovicjWebSocket Open Source Cross-Browser/Cross-Platform WebSocket Solution

    jWebSocket.org Stay Connected

  • Die heutige SessionAgendaKommunikation mit WebSockets Wo, Was, Warum, Wie, WohinWebSocket Server und Browser ClientWebSocket Kommunikation fr mobile AppsAndroid Demos und Code BeispielejWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Apps im WandelMehr Kommunikation statt reiner InformationEntertainment, sofortiger ErlebnisaustauschWir werden immer mehr online seinText, Fotos, Videos, Music, Geo-Location etc.Angebote fr stationre und mobile GerteBrowser-, Desktop- und Mobile-Apps verschmelzenWebSockets helfen die User besser zu verbinden

    jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Grundlage WebSocketsWebSockets sind bidirektional und permanentEffiziente Echtzeit-Kommunikation statt umstndlichem Request/Response-ProtokollWebSockets helfen Interoperabilitt herzustellenStandardisierter Handshake und Paketaustausch fr stationre und mobile PlattformenWeb und Mobile Apps brauchen...sichere, zuverlssige und schnelle KommunikationjWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Was wir haben: HTTPHTTP - designed zur bertragung von DokumentenAlle umstndlichen, nearly realtime Tricks wie...Polling, Reverse-AJAXChunking, Comet etc......sind letztlich nicht standardisierte Hacks!HTTP bleibt ein Request/Response MechanismusjWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Nearly Realtime MechanismenPollingSenden regelmiger Anfragen mit sofortiger AntwortViele Verbindungen, hohes Volumen, niedrige Effizienz (insbesondere bei niedriger Datenrate)Long PollingRegelmige Anfragen mit Offenhalten der VerbindungHohes Volumen, 2 Kanle pro Client, Puffer-Problem, viele Verbindungen (insbesondere bei hoher Datenrate)jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • KostenKalkulation Volumen und Bandbreite HTTPAnnahme: 800 Bytes fr Requests + Response (bis 2KB)1.000 Clients x 800 Bytes = 800 KB => 6,4 Mbit/s10.000 Clients x 800 Bytes = 8 MB => 64 Mbit/s100.000 Clients x 800 Bytes = 80 MB => 640 Mbit/s

    Und das nur frs Protokoll ohne Nutzdaten !jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • WebSockets ? WebSockets Was ist das ?Bidirektionales Full-Duplex Protokoll zwischen Browser Clients und WebSocket ServerEbenso fr Desktop oder Mobile Apps verwendbarDesigned fr permanente/langhaltende VerbindungenStandardisiert in HTML5, W3C-API, IETF-Protokoll (http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76)WebSockets sind TCP nicht HTTP basiert !jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • TCP statt HTTPUmfangreiche FreiheitenKeinerlei Bindung an bestimmte DatenformateKeinerlei Vorgaben fr Inhalte oder VerarbeitungAber auch hohe VerantwortungDatenformate und Kommunikationslogik mssen selbst implementiert werdenEbenso alle Sicherheitsmechanismen !jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • VerbindungsaufbauHandshake

    jWebSocket Stay Connected*08.09.2010Client

    GET {path} HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: {hostname}:{port}Origin: http://{host}[:{port}]Sec-WebSocket-Key1: {sec-key1}Sec-WebSocket-Key2: {sec-key2}

    8 Bytes generated {sec-key3}

    jWebSocket.org Stay Connected

  • VerbindungsaufbauHandshake (Same Origin Policy, IETF Draft #76)jWebSocket Stay Connected*08.09.2010Client

    GET /services/chat/;room=Foyer HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: jwebsocket.orgOrigin: http://jwebsocket.orgSec-WebSocket-Key1: 4 @1 46546xW%0l 1 5Sec-WebSocket-Key2: 12998 5 Y3 1 .P00

    ^n:ds[4UServer

    HTTP/1.1 101 WebSocket Protocol HandshakeUpgrade: WebSocketConnection: UpgradeSec-WebSocket-Origin: http://jwebsocket.orgSec-WebSocket-Location: ws://jwebsocket.org/ services/chat

    8jKS'y:G*Co,Wxa-

    jWebSocket.org Stay Connected

  • Bidirektionaler DatenaustauschTextframes (freigegeben)0x00 0xFFKeine theoretische Lngenbegrenzung, JavaScript: 4 GBBinrframes (noch nicht freigegeben)0x80-0xFF Das WebSocket Protokoll lebt!Aktuell IEFT Draft #76 (nderungen erwartet)

    jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • WebSockets TCP vs. HTTPKalkulation Volumen und Bandbreite WebSocketsFeststellung: 2 Bytes fr Requests + Response1.000 Clients x 2 Bytes = 2 KB => 0,016 Mbit/s10.000 Clients x 2 Bytes = 20 KB => 0,16 Mbit/s100.000 Clients x 2 Bytes = 200 KB => 1,6 Mbit/s

    Protokoll-Overhead: Ein-vierhundert-stel !jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • WebSockets Warum?Schneller, billiger, offenerSchlankere Kommunikation (TCP vs. HTTP overhead) WebSockets ersetzen XHR und Comet schrittweiseBelegt nur einen Kanal (bidirektional, full-duplex)Ressourcenschonend und kostenreduzierend, doppelt so viele Clients gleichzeitig pro ServerKeine Protokollvorgaben oder Bindung an bestimmte Datenformate

    jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • WebSockets - WofrWebSockets sind die perfekte Basis fr...Online-Games und Online-CollaborationRemote Control und MonitoringStreaming und ChatSoziale NetzwerkeCluster und Grids

    jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • HTML5 BrowserWebSockets im Browser

    jWebSocket Stay Connected*08.09.2010var lWebSocketClient = new WebSocket("ws://jwebsocket.org:8787"); // tries to open the TCP connection and to exchange handshake

    lWebSocketClient.onopen = function(aEvent) { // connection has successfully been established}lWebSocketClient.onmessage = function(aEvent) { // a data packet has completely been received in aEvent.data}lWebSocketClient.onclose = function(aEvent) { // the connection has been terminated}lWebSocketClient.send("Hello World!"); // sends a UTF-8 text message to the server

    lWebSocketClient.close(); // terminates the connection

    jWebSocket.org Stay Connected

  • KompatibilittX-Browser und X-Plattform kompatibelNativ in Chrome 4/5/6, Firefox 4, Safari 5, IE 6/7/8, Opera 9/10 und ltere Browser mit FlashBridge

    Clients fr Android, Symbian und Blackberry, iPhone ab Dezember 2010jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • TokenjWebSocket Token ModellAlle Knoten in einem WebSocket Netzwerk sind von Geburt an erstmal dummAlle Beteiligten mssen sich auf eine gemeinsame Sprache einigen, um eingehende Pakete zu verstehenZum Beispiel JSON, XML oder auch CSVAbstrakt: Datenobjekte, in jWebSocket TokenjWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • jWebSocket ServerServer InfrastrukturEnginesTokensServerFilterPlug-InsListener

    jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • jWebSocket JavaScript ClientClient InfrastrukturBasis WebSocket ClientToken ClientErweiterbar mit Plug-InsFeaturesConnection ManagementSession ManagementAuthentifizierung und AutorisierungjWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • WebSockets Wie?Fertige Libraries verfgbar (Open Source, LGPL)Browser Client in JavaScript jWebSocket.js inkl. FlashBridge und JSON SupportjWebSocket Server als .jar, .war, .exe oder ServiceClient fr Java SE z.B. fr Swing Desktop AppsClients fr Android, Symbian und BlackBerry (iPhone ab Dezember 2010)jWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Android - Dalvik VMAndroid Apps in JavaIm Prinzip Java 1.5, inkl. Collections, Annotations etc.Googles eigene Dalvik VM: optimiert fr mobile Gerte, sehr kompakt, aber leider nicht byte-code kompatibelWie schon unter Java ME leidlich erfahren: Write Once Run Everwhere gehrt der Vergangenheit anSpezielle Android Builds der Libraries erforderlich, eigene re-compilieren, Third-Party Libs im SourcejWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Low-Level-InterfaceJava Client fr Android, Symbian und BlackBerryjWebSocket Stay Connected*08.09.2010public interface WebSocketClient { void open(String aURL) throws WebSocketException; void send(WebSocketPacket aPacket) throws WebSocketException; void close() throws WebSocketException; boolean isConnected();

    void addListener(WebSocketClientListener aListener); void removeListener(WebSocketClientListener aListener);

    void notifyOpened(WebSocketClientEvent aEvent); void notifyPacket(WebSocketClientEvent aEvent, WebSocketPacket(aPacket); void notifyClosed(WebSocketClientEvent aEvent);}

    jWebSocket.org Stay Connected

  • ListenerGleiches API wie bei den Web ClientsjWebSocket Stay Connected*08.09.2010public interface WebSocketClientListener {

    void processOpened(WebSocketClientEvent aEvent);

    void processPaket(WebSocketClientEvent aEvent, WebSocketPacket aPacket);

    void processClosed(WebSocketClientEvent aEvent);

    }

    jWebSocket.org Stay Connected

  • Java WebSocket ClientjWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Android Demo AppMainActivityListview

    ConfigActivityURLUsernamePasswordjWebSocket Stay Connected*08.09.2010

    jWebSocket.org Stay Connected

  • Android FundamentalsjWebSocket Stay Connected*08.09.2010WebSocket AppVerbindung aufbauenNachrichten empfangenNachrichten sendenNachrichten broadcastenVerbindung trennen

    jWebSocket.org Stay Connected

  • Android Canvas DemoOnline-CollaborationMehrere Be