Stay Connected
Download
1 / 32

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


  • 116 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

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