stay connected mobile pushing apps mit websockets alexander schulze predrag stojadinovic

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

Upload: faolan

Post on 09-Jan-2016

93 views

Category:

Documents


1 download

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 SchulzePredrag 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

• WebSocket Kommunikation für mobile Apps

• Android Demos und Code Beispiele

jWebSocket – Stay Connected 208.09.2010

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

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

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

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

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

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

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

Verbindungsaufbau

• Handshake

jWebSocket – Stay Connected 1008.09.2010

Client

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} 

Verbindungsaufbau

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

jWebSocket – Stay Connected 1108.09.2010

Client

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

Server

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-

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

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

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 oderBindung an bestimmte Datenformate

jWebSocket – Stay Connected 1408.09.2010

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

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

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

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

jWebSocket Server

• Server Infrastruktur• Engines

• Tokens

• Server

• Filter

• Plug-Ins

• Listener

jWebSocket – Stay Connected 1908.09.2010

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

WebSockets – Wie?

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

jWebSocket.js inkl. FlashBridge und JSON Support

• jWebSocket Serverals .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

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

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

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

}

Java WebSocket Client

jWebSocket – Stay Connected 2508.09.2010

Android Demo App

• MainActivity• Listview

• ConfigActivity• URL

• Username

• Password

jWebSocket – Stay Connected 2608.09.2010

Android Fundamentals

jWebSocket – Stay Connected 2708.09.2010

• WebSocket App• Verbindung aufbauen

• Nachrichten empfangen

• Nachrichten senden

• Nachrichten broadcasten

• Verbindung trennen

Android Canvas Demo

• Online-Collaboration• Mehrere Benutzer arbeiten

am gleichen Dokument

• Beispiel:SharedCanvas

jWebSocket – Stay Connected 2808.09.2010

Android - Fotos übertragen

• Imagetransfer• jWebSocket FileSystem Plug-In

• Benachrichtigung bei Änderungen

• Binärdaten werden Base64codiert, Optimierung mit neuemBinärprotokoll umgehend erwartet

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

jWebSocket – Stay Connected 2908.09.2010

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

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

Vielen Dank für Ihre Aufmerksamkeit !

Fragen & AntwortenAlexander Schulze

Predrag Stojadinovic

Forum & Downloadhttp://jwebsocket.org @jWebSocket

jWebSocket – Stay Connected 3208.09.2010