01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

32
Stay Connected Mobile Pushing Apps mit WebSockets Alexander Schulze Predrag Stojadinovic jWebSocket – Open Source Cross-Browser/Cross-Platform WebSocket Solution

description

se­me­li­ne­ näi­tus­te­ prog­ramm,­ mil­le­ kau­du­ on­ või­ma­ lik­ nä­ha­ enam­ kui­ 3500­ ori­gi­naal­set­ kuns­ti­teost,­mis­ Amee­ri­ ka­Ühend­rii­ki­de­ko­da­ni­kud­on­eks­po­nee­ri­mi­seks­väl­ja­lae­na­nud.­ Neid­ töid­näi­da­tak­se­ li­gi­kau­du­200­USA­saat­kon­na­ re­si­dent­sis­ ja­ dip­lo­maa­ti­li­ses­ esin­du­ses­üle­ ko­gu­maail­ma.­Oma­ tee­ma­de­ mit­me­ke­si­su­se­ja­si­su­ga­esin­da­vad­need­näi­tu­sed­meie­de­mok­ raa­tia­ üht­ olu­li­se­mat­ põ­hi­mõ­tet,­mil­leks­ on­ väl­jen­dus­va­ba­dus.­ USA­suur­saa­di­kud­tun­ne­vad­uh­kust­nen­de­kuns­ti­teos­te­üle,­mis­ ai­ta­vad­neid­su­he­te­loo­mse­me­li­ne­ näi­tus­te­ prog­ramm,­ mil­le­ kau­du­ on­ või­ma­ lik­ nä­ha­ enam­ kui­ 3500­ ori­gi­naal­set­ kuns­ti­teost,­mis­ Amee­ri­ ka­Ühend­rii­ki­de­ko­da­ni­kud­on­eks­po­nee­ri­mi­seks­väl­ja­lae­na­nud.­ Neid­ töid­näi­da­tak­se­ li­gi­kau­du­200­USA­saat­kon­na­ re­si­dent­sis­ ja­ dip­lo­maa­ti­li­ses­ esin­du­ses­üle­ ko­gu­maail­ma.­Oma­ tee­ma­de­ mit­me­ke­si­su­se­ja­si­su­ga­esin­da­vad­need­näi­tu­sed­meie­de­mok­ raa­tia­ üht­ olu­li­se­mat­ põ­hi­mõ­tet,­mil­leks­ on­ väl­jen­dus­va­ba­dus.­ USA­suur­saa­di­kud­tun­ne­vad­uh­kust­nen­de­kuns­ti­teos­te­üle,­mis­ ai­ta­vad­neid­su­he­te­loo­m

Transcript of 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Page 1: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Stay ConnectedMobile Pushing Apps mit WebSockets

Alexander SchulzePredrag Stojadinovic

jWebSocket – Open Source Cross-Browser/Cross-Platform WebSocket Solution

Page 2: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Die heutige Session

• Agenda• Kommunikation mit WebSockets

Wo, Was, Warum, Wie, Wohin• WebSocket Server und Browser Client• WebSocket Kommunikation für mobile Apps• Android Demos und Code Beispiele

jWebSocket – Stay Connected 208.09.2010

Page 3: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Apps im Wandel

• Mehr Kommunikation statt reiner Information• Entertainment, sofortiger Erlebnisaustausch

• Wir werden immer mehr online sein• Text, Fotos, Videos, Music, Geo-Location etc.

• Angebote für stationäre und mobile Geräte• Browser-, Desktop- und Mobile-Apps verschmelzen

• WebSockets helfen die User besser zu verbinden

jWebSocket – Stay Connected 308.09.2010

Page 4: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Grundlage WebSockets

• WebSockets sind bidirektional und permanent• Effiziente Echtzeit-Kommunikation statt

umständlichem Request/Response-Protokoll• WebSockets helfen Interoperabilität

herzustellen• Standardisierter Handshake und Paketaustausch

für stationäre und mobile Plattformen• Web und Mobile Apps brauchen...• sichere, zuverlässige und schnelle Kommunikation

jWebSocket – Stay Connected 408.09.2010

Page 5: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Was wir haben: HTTP

• HTTP - designed zur Übertragung von Dokumenten

• Alle umständlichen, nearly realtime Tricks wie...• Polling, Reverse-AJAX• Chunking, Comet etc...

• ...sind letztlich nicht standardisierte Hacks!• HTTP bleibt ein Request/Response

Mechanismus

jWebSocket – Stay Connected 508.09.2010

Page 6: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Nearly Realtime Mechanismen

• Polling• Senden regelmäßiger Anfragen mit sofortiger Antwort• Viele Verbindungen, hohes Volumen, niedrige Effizienz

(insbesondere bei niedriger Datenrate)• Long Polling• Regelmäßige Anfragen mit Offenhalten der Verbindung• Hohes Volumen, 2 Kanäle pro Client, Puffer-Problem,

viele Verbindungen (insbesondere bei hoher Datenrate)

jWebSocket – Stay Connected 608.09.2010

Page 7: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Kosten

• Kalkulation Volumen und Bandbreite HTTP• Annahme: 800 Bytes für Requests + Response (bis

2KB)• 1.000 Clients x 800 Bytes = 800 KB => 6,4 Mbit/s• 10.000 Clients x 800 Bytes = 8 MB => 64 Mbit/s• 100.000 Clients x 800 Bytes = 80 MB => 640 Mbit/s

• Und das nur für‘s Protokoll – ohne Nutzdaten !

jWebSocket – Stay Connected 708.09.2010

Page 8: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

WebSockets ?

• WebSockets – Was ist das ?• Bidirektionales Full-Duplex Protokoll

zwischen Browser Clients und WebSocket Server• Ebenso für Desktop oder Mobile Apps verwendbar• Designed für permanente/langhaltende

Verbindungen• Standardisiert in HTML5, W3C-API, IETF-Protokoll

(http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76)

• WebSockets sind TCP – nicht HTTP – basiert !

jWebSocket – Stay Connected 808.09.2010

Page 9: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

TCP statt HTTP

• Umfangreiche Freiheiten• Keinerlei Bindung an bestimmte Datenformate• Keinerlei Vorgaben für Inhalte oder Verarbeitung

• Aber auch hohe Verantwortung• Datenformate und Kommunikationslogik

müssen selbst implementiert werden• Ebenso alle Sicherheitsmechanismen !

jWebSocket – Stay Connected 908.09.2010

Page 10: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Verbindungsaufbau

• Handshake

jWebSocket – Stay Connected 1008.09.2010

ClientGET {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} 

Page 11: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Verbindungsaufbau

• Handshake (Same Origin Policy, IETF Draft #76)

jWebSocket – Stay Connected 1108.09.2010

ClientGET /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[4U

ServerHTTP/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-

Page 12: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Bidirektionaler Datenaustausch

• Textframes (freigegeben)• 0x00 <UTF8-Textdaten> 0xFF• Keine theoretische Längenbegrenzung,

JavaScript: 4 GB• Binärframes (noch nicht freigegeben)• 0x80-0xFF <Länge> <Binäre Daten>

• Das WebSocket Protokoll lebt!• Aktuell IEFT Draft #76 (Änderungen erwartet)

jWebSocket – Stay Connected 1208.09.2010

Page 13: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

WebSockets TCP vs. HTTP

• Kalkulation Volumen und Bandbreite WebSockets• Feststellung: 2 Bytes für Requests + Response• 1.000 Clients x 2 Bytes = 2 KB => 0,016 Mbit/s• 10.000 Clients x 2 Bytes = 20 KB => 0,16 Mbit/s• 100.000 Clients x 2 Bytes = 200 KB => 1,6 Mbit/s

• Protokoll-Overhead: Ein-vierhundert-stel !

jWebSocket – Stay Connected 1308.09.2010

Page 14: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

WebSockets – Warum?

• Schneller, billiger, offener• Schlankere Kommunikation (TCP vs. HTTP overhead)

WebSockets ersetzen XHR und Comet schrittweise

• Belegt nur einen Kanal (bidirektional, full-duplex)• Ressourcenschonend und kostenreduzierend,

doppelt so viele Clients gleichzeitig pro Server• Keine Protokollvorgaben oder

Bindung an bestimmte Datenformate

jWebSocket – Stay Connected 1408.09.2010

Page 15: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

WebSockets - Wofür

• WebSockets sind die perfekte Basis für...• Online-Games und Online-Collaboration• Remote Control und Monitoring• Streaming und Chat• Soziale Netzwerke• Cluster und Grids

jWebSocket – Stay Connected 1508.09.2010

Page 16: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

HTML5 Browser

• WebSockets im Browser

jWebSocket – Stay Connected 1608.09.2010

var 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

Page 17: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Kompatibilität

• X-Browser und X-Plattform kompatibel• Nativ in Chrome 4/5/6, Firefox 4, Safari 5,

IE 6/7/8, Opera 9/10 und ältere Browsermit FlashBridge

• Clients für Android, Symbian und Blackberry, iPhone ab Dezember 2010

jWebSocket – Stay Connected 1708.09.2010

Page 18: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Token

• jWebSocket Token Modell• Alle Knoten in einem WebSocket Netzwerk

sind von Geburt an erstmal dumm• Alle Beteiligten müssen sich auf eine

gemeinsame Sprache einigen, um eingehende Pakete zu „verstehen“

• Zum Beispiel JSON, XML oder auch CSV• Abstrakt: Datenobjekte, in jWebSocket „Token“

jWebSocket – Stay Connected 1808.09.2010

Page 19: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

jWebSocket Server

• Server Infrastruktur• Engines• Tokens• Server• Filter• Plug-Ins• Listener

jWebSocket – Stay Connected 1908.09.2010

Page 20: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

jWebSocket JavaScript Client

• Client Infrastruktur• Basis WebSocket Client• Token Client• Erweiterbar mit Plug-Ins

• Features• Connection Management• Session Management• Authentifizierung und Autorisierung

jWebSocket – Stay Connected 2008.09.2010

Page 21: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

WebSockets – Wie?

• Fertige Libraries verfügbar (Open Source, LGPL)• Browser Client in JavaScript

jWebSocket.js inkl. FlashBridge und JSON Support• jWebSocket Server

als .jar, .war, .exe oder Service• Client für Java SE z.B. für Swing Desktop Apps• Clients für Android, Symbian und BlackBerry

(iPhone ab Dezember 2010)

jWebSocket – Stay Connected 2108.09.2010

Page 22: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Android - Dalvik VM

• Android Apps in Java• Im Prinzip Java 1.5, inkl. Collections, Annotations etc.• Google‘s eigene Dalvik VM: optimiert für mobile Geräte,

sehr kompakt, aber leider nicht byte-code kompatibel• Wie schon unter Java ME leidlich erfahren:

Write Once Run Everwhere gehört der Vergangenheit an• Spezielle Android Builds der Libraries erforderlich,

eigene re-compilieren, Third-Party Libs im Source

jWebSocket – Stay Connected 2208.09.2010

Page 23: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Low-Level-Interface

• Java Client für Android, Symbian und BlackBerry

jWebSocket – Stay Connected 2308.09.2010

public 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);}

Page 24: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Listener

• Gleiches API wie bei den Web Clients

jWebSocket – Stay Connected 2408.09.2010

public interface WebSocketClientListener {

void processOpened(WebSocketClientEvent aEvent);

void processPaket(WebSocketClientEvent aEvent, WebSocketPacket aPacket);

void processClosed(WebSocketClientEvent aEvent);

}

Page 25: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Java WebSocket Client

jWebSocket – Stay Connected 2508.09.2010

Page 26: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Android Demo App

• MainActivity• Listview

• ConfigActivity• URL• Username• Password

jWebSocket – Stay Connected 2608.09.2010

Page 27: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Android Fundamentals

jWebSocket – Stay Connected 2708.09.2010

• WebSocket App• Verbindung aufbauen• Nachrichten empfangen• Nachrichten senden• Nachrichten broadcasten• Verbindung trennen

Page 28: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Android Canvas Demo

• Online-Collaboration• Mehrere Benutzer arbeiten

am gleichen Dokument• Beispiel:

SharedCanvas

jWebSocket – Stay Connected 2808.09.2010

Page 29: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Android - Fotos übertragen

• Imagetransfer• jWebSocket FileSystem Plug-In• Benachrichtigung bei Änderungen• Binärdaten werden Base64

codiert, Optimierung mit neuemBinärprotokoll umgehend erwartet

• http://jwebsocket.org/Snapshot Demo!

jWebSocket – Stay Connected 2908.09.2010

Page 30: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Ausblick

• Wir haben noch viel vor...• SSO und Authentification/Autorisation API• Remote Procedure Calls (RPC)• Cloud API, Smart Grids und Cluster• Shared Objects und FileSharing API• JDBC Bridge und Database API• Externe Service Nodes

jWebSocket – Stay Connected 3008.09.2010

Page 31: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

In eigener Sache

• Das jWebSocket Team sucht Unterstützung!• Java EE, SE, ME, JavaScript, Objective C...• Android, Symbian, BlackBerry, iPhone...• Ideen für innovative Apps willkommen!

• Wir bieten...• Umfangreiche Erfahrungen eines internationalen

Teams• Erstklassigen Support für eigene Projekte• Unterstützung beim Aufbau eigener Reputation

jWebSocket – Stay Connected 3108.09.2010

Page 32: 01032021 system 1 google eri kaÜhend riikide kodaniku doneks pon eeri

Vielen Dank für Ihre Aufmerksamkeit !

Fragen & AntwortenAlexander Schulze

Predrag Stojadinovic

Forum & Downloadhttp://jwebsocket.org @jWebSocket

jWebSocket – Stay Connected 3208.09.2010