slide1
Download
Skip this Video
Download Presentation
Stay Connected Mobile Pushing Apps mit WebSockets Alexander Schulze Predrag Stojadinovic

Loading in 2 Seconds...

play fullscreen
1 / 32

Stay Connected Mobile Pushing Apps mit WebSockets Alexander Schulze Predrag Stojadinovic - PowerPoint PPT Presentation


  • 120 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Stay Connected Mobile Pushing Apps mit WebSockets Alexander Schulze Predrag Stojadinovic' - faolan


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Stay Connected

Mobile PushingApps mit WebSockets

Alexander SchulzePredrag Stojadinovic

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

die heutige session
Die heutige Session
  • Agenda
    • Kommunikation mit WebSocketsWo, Was, Warum, Wie, Wohin
    • WebSocket Server und Browser Client
    • WebSocket Kommunikation für mobile Apps
    • Android Demos und Code Beispiele

jWebSocket – Stay Connected

apps im wandel
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

grundlage websockets
Grundlage WebSockets
  • WebSockets sind bidirektional und permanent
    • Effiziente Echtzeit-Kommunikation stattumständlichem Request/Response-Protokoll
  • WebSockets helfen Interoperabilität herzustellen
    • Standardisierter Handshake und Paketaustauschfür stationäre und mobile Plattformen
  • Web und Mobile Apps brauchen...
    • sichere, zuverlässige und schnelle Kommunikation

jWebSocket – StayConnected

was wir haben http
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

nearly realtime mechanismen
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

kosten
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

websockets
WebSockets ?
  • WebSockets – Was ist das ?
    • Bidirektionales Full-Duplex Protokollzwischen 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

tcp statt http
TCP statt HTTP
  • Umfangreiche Freiheiten
    • Keinerlei Bindung an bestimmte Datenformate
    • Keinerlei Vorgaben für Inhalte oder Verarbeitung
  • Aber auch hohe Verantwortung
    • Datenformate und Kommunikationslogikmüssen selbst implementiert werden
    • Ebenso alle Sicherheitsmechanismen !

jWebSocket – Stay Connected

verbindungsaufbau
Verbindungsaufbau
  • Handshake

Client

GET {path} HTTP/1.1

Upgrade: WebSocket

Connection: Upgrade

Host: {hostname}:{port}

Origin: http://{host}[:{port}]

Sec-WebSocket-Key1: {sec-key1}

Sec-WebSocket-Key2: {sec-key2}

8 Bytes generated {sec-key3}

Server

HTTP/1.1 101 WebSocketProtocolHandshake

Upgrade: WebSocket

Connection: Upgrade

Sec-WebSocket-Origin: http://{hostname}[:{port}

Sec-WebSocket-Location: ws://{hostname}:{port}/

16 Bytes MD5 Checksum

jWebSocket – Stay Connected

verbindungsaufbau1
Verbindungsaufbau
  • Handshake(Same OriginPolicy, IETF Draft #76)

Client

GET /services/chat/;room=Foyer HTTP/1.1

Upgrade: WebSocket

Connection: Upgrade

Host: jwebsocket.org

Origin: http://jwebsocket.org

Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5

Sec-WebSocket-Key2: 12998 5 Y3 1 .P00

^n:ds[4U

Server

HTTP/1.1 101 WebSocketProtocolHandshake

Upgrade: WebSocket

Connection: Upgrade

Sec-WebSocket-Origin: http://jwebsocket.org

Sec-WebSocket-Location: ws://jwebsocket.org/services/chat

8jKS\'y:G*Co,Wxa-

jWebSocket – Stay Connected

bidirektionaler datenaustausch
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

websockets tcp vs http
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

websockets warum
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

websockets wof r
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

html5 browser
HTML5 Browser
  • WebSockets im Browser

varlWebSocketClient = new WebSocket("ws://jwebsocket.org:8787");

// tries to openthe TCP connection and to exchangehandshake

lWebSocketClient.onopen = function(aEvent) {

// connection has successfullybeenestablished

}

lWebSocketClient.onmessage = function(aEvent) {

// a data packet has completelybeenreceived in aEvent.data

}

lWebSocketClient.onclose = function(aEvent) {

// theconnection has beenterminated

}

lWebSocketClient.send("Hello World!");

// sends a UTF-8 text message to theserver

lWebSocketClient.close();

// terminatestheconnection

jWebSocket – Stay Connected

kompatibilit t
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

token
Token
  • jWebSocket Token Modell
    • Alle Knoten in einem WebSocket Netzwerksind 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

jwebsocket server
jWebSocket Server
  • Server Infrastruktur
    • Engines
    • Tokens
    • Server
    • Filter
    • Plug-Ins
    • Listener

jWebSocket – Stay Connected

jwebsocket javascript client
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

websockets wie
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

android dalvik vm
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

low level interface
Low-Level-Interface
  • Java Client für Android, Symbian und BlackBerry

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

}

jWebSocket – Stay Connected

listener
Listener
  • Gleiches API wie bei den Web Clients

public interface WebSocketClientListener {

void processOpened(WebSocketClientEvent aEvent);

void processPaket(WebSocketClientEvent aEvent, WebSocketPacket aPacket);

void processClosed(WebSocketClientEvent aEvent);

}

jWebSocket – Stay Connected

java websocket client
Java WebSocket Client

public class MyWebSocketTokenClient

implements WebSocketTokenClientListener {

public MyWebSocketClient() {

try {

client = new BaseTokenClient();

client.addListener(this);

} catch (Exception ex) {

// exception handling

}

}

public void processOpened(WebSocketClientEvent aEvent) {

System.out.println("Opened.");

}

public void processPacket(WebSocketClientEvent aEvent, WebSocketPacket aPacket) {

// optionally evaluate the raw datapacket

}

public void processToken(WebSocketClientEvent aEvent,

Token aToken) {

System.out.println("Received Token: “ + aToken.toString());

}

public void processClosed(WebSocketClientEvent aEvent) {

System.out.println("Closed.");

}

public void connect(String aURL) {

try {

client.open(aURL);

} catch (WebSocketException ex) {

// exception handling

}

}

public void disconnect() {

try {

client.close();

} catch (WebSocketException ex) {

// exception handling

}

}

}

jWebSocket – Stay Connected

android demo app
Android Demo App
  • MainActivity
    • Listview
  • ConfigActivity
    • URL
    • Username
    • Password

jWebSocket – Stay Connected

android fundamentals
Android Fundamentals
  • WebSocket App
    • Verbindung aufbauen
    • Nachrichten empfangen
    • Nachrichten senden
    • Nachrichten broadcasten
    • Verbindung trennen

jWebSocket – Stay Connected

android canvas demo
Android Canvas Demo
  • Online-Collaboration
    • Mehrere Benutzer arbeitenam gleichen Dokument
    • Beispiel:SharedCanvas

jWebSocket – Stay Connected

android fotos bertragen
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

ausblick
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

in eigener sache
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

vielen dank f r ihre aufmerksamkeit
Vielen Dank für Ihre Aufmerksamkeit !

Fragen & Antworten

Alexander Schulze

Predrag Stojadinovic

Forum & Download

http://jwebsocket.org @jWebSocket

jWebSocket – Stay Connected

ad