Stay Connected
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

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


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Stay Connected Mobile Pushing Apps mit WebSockets Alexander Schulze Predrag Stojadinovic

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 pushing apps mit websockets alexander schulze predrag stojadinovic

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


  • Login