Click here to load reader
View
61
Download
1
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
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