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

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Dominic Ziegler 12c Webprogrammierung.
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
Entwicklung und Einsatz von Smart Client-Anwendungen Jens Häupel Developer Evangelist Microsoft Deutschland GmbH Dirk Primbs.
© 2003 Guido Badertscher Spontane Vernetzung - UPnP 9. Jänner 2004 Spontane Vernetzung Guido Badertscher.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Internet Protokolle und Formate 1.1 HTTP 1.2 HTML 1.3 SGML 2. XML 3. WAP Matthias Thränhardt Sebastian Weber.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
BEEP The Blocks Extensible Exchange Protocol Core
Advance Reservation & QoS Agents Simon Oberthür. 2/ 27Simon Oberthür Inhalt Advance Reservation Was ist Advance Reservation? Probleme und Lösungen Advance.
Filiale pea09 Die Einbindung der MySQL-Datenbank in das Servlet.
Seminar Web-Engineering Nina Aschenbrenner / Ruben Jubeh 1 FG Software Engineering Software Engineering Seminar Web Engineering Seminar des Fachgebiet.
Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
Java in 9 Folien Besser: Online-Buch Go to Java 2.
.NET – Quo Vadis? Dariusz Parys Developer Group Microsoft GmbH.
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
Divide and Conquer Eclipse RCP und Spring in verteilten Anwendungen Stefan Reichert | Lufthansa Systems Benjamin Pasero | IBM Rational.
XML-Schnittstellen: SAX, DOM, XML Pull Parsing Timo Terletzki Transformation von XML-Dokumenten.
Proseminar Web Engineering PS07: Retrieving data from social networks: APIs and protocols.
Thin Client vs. Zero Client Key Account Government 04 / 2012 Tim Riedel Welche Vorteile bieten Thin Clients gegenüber Zero Clients?
Microsoft Office Forms Server
Entwickeln einer Windows 8 Modern UI Businessapplikation auf der Basis von Dynamics CRM/xRM Christian Haller Marc Sallin isolutions AG isolutions.
Servlet III Java Webanwendung Webcontainer Web.xml
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Veeam Portfolio 5 Jahre Innovation 7 neue wegweisende Features.
Google App Engine Microsoft Windows Azure
Sanjay Patil Standards Architect – SAP AG April 2008
3 Technologien im Wettstreit um Ihre nächste Webanwendung Rainer Worbis Markus Unterauer Entwickler, cubido business solutions gmbh.
25. Juli 2011www.mobile-devcon.de Herzlich Willkommen zur mobile DevCon! Keynote Mobile Technologien Sprecher Alexander Schulze.
Stay Connected Realtime-Webapplikationen mit jWebSocket Alexander Schulze Predrag Stojadinovic jWebSocket – Open Source Cross-Browser/Cross-Platform WebSocket.
Outputter Engine. Ausgangslage 10 jähriges Web Framework Veraltete User Controls Schlechte Unterstützung für mobile Geräte Bestehende Applikationen /
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
Traildevils Mobile Web-App X-Platform Stefan Oderbolz Jürg Hunziker 16. Dezember 2011.
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
| Basel Von der SharePoint Taskliste zum gemanagten Project in Project Server Luca Argentiero Solution Specialist Microsoft
Gameplay Systems I Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung SS 2012 Prof. Dr. phil. Manfred Thaller Referent: Christian Weitz.
App-Entwicklung mit HTML5, CSS und JavaScript
RateMe Slides. Ablauf Präsentation des Konzepts (5-10 min) Demonstration der laufenden Software (5-10 min) Fazit der gesammelten Erkenntnisse.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
RateMe Slides. Ablauf Präsentation des Konzepts (5-10 min) Demonstration der laufenden Software (5-10 min) Fazit der gesammelten Erkenntnisse.
Developer Day Webseiten auf Windows Azure hosten Britta Labud bbv Software Services AG Roland Krummenacher bbv Software Services AG.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
| Basel Developing apps for SharePoint 2013 using Visual Studio 2013 René Modery, Office 365 MVP, 1stQuad Solutions.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Praxis der Internet-Programmierung
Praxis der Internet-Programmierung
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
SharePoint FIS HandsOn – out of the Box.
Making people work together! Folie 1 NEXPLORE AG Stefan von Niederhäusern Einfache Anwendung der SuisseID durch das Software Development KIT
Office Business Anwendungen mit SharePoint Fabian Moritz | MVP Office SharePoint Server.
Die nächste Generation von Microsoft Office System 2007 Microsoft Office System Gernot Kühn Technologieberater Office System Mittelstandsbetreuung.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
Gtn gmbh Jedesmal, wenn du alle Antworten gelernt hast, wechseln sie alle Fragen. Oliver Otis Howard ( )
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
Ajax und Webentwicklung mit Prototype
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
© Zühlke 2013 Romano Roth Workshop 6 (ws6C) native Entwicklung für mobile Geräte Lektion 5-6: Mega CRM 25. Februar 2013 Folie 1 von 10.
Cloud Entwicklung: Web Services
WEBSOCKETS DATUM AUTOR.
© WZL/Fraunhofer IPT Eine Gegenüberstellung von Websockets und RESTful Web Services Seminarvortrag von Lucie Mades.
Tutorstunde 10.
 Präsentation transkript:

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 WebSocket Kommunikation für mobile Apps Android Demos und Code Beispiele jWebSocket – Stay Connected

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

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 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 Kalkulation Volumen und Bandbreite HTTP Annahme: 800 Bytes für Requests + Response (bis 2KB) Clients x 800 Bytes = 800 KB => 6,4 Mbit/s Clients x 800 Bytes = 8 MB => 64 Mbit/s Clients x 800 Bytes = 80 MB => 640 Mbit/s Und das nur fürs Protokoll – ohne Nutzdaten ! jWebSocket – Stay Connected

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 ( WebSockets sind TCP – nicht HTTP – basiert ! jWebSocket – Stay Connected

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

Verbindungsaufbau Handshake jWebSocket – Stay Connected Client GET {path} HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: {hostname}:{port} Origin: Sec-WebSocket-Key1: {sec-key1} Sec-WebSocket-Key2: {sec-key2} 8 Bytes generated {sec-key3} Server HTTP/ WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: Sec-WebSocket-Location: ws://{hostname}:{port}/ 16 Bytes MD5 Checksum

Verbindungsaufbau Handshake (Same Origin Policy, IETF Draft #76) jWebSocket – Stay Connected Client GET /services/chat/;room=Foyer HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: jwebsocket.org Origin: Sec-WebSocket-Key1: 46546xW%0l 1 5 Sec-WebSocket-Key2: Y3 1.P00 ^n:ds[4U Server HTTP/ WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: Sec-WebSocket-Location: ws://jwebsocket.org/ services/chat 8jKS'y:G*Co,Wxa-

Bidirektionaler Datenaustausch Textframes (freigegeben) 0x00 0xFF Keine theoretische Längenbegrenzung, JavaScript: 4 GB Binärframes (noch nicht freigegeben) 0x80-0xFF Das WebSocket Protokoll lebt! Aktuell IEFT Draft #76 (Änderungen erwartet) jWebSocket – Stay Connected

WebSockets TCP vs. HTTP Kalkulation Volumen und Bandbreite WebSockets Feststellung: 2 Bytes für Requests + Response Clients x 2 Bytes = 2 KB => 0,016 Mbit/s Clients x 2 Bytes = 20 KB => 0,16 Mbit/s Clients x 2 Bytes = 200 KB => 1,6 Mbit/s Protokoll-Overhead: Ein-vierhundert-stel ! jWebSocket – Stay Connected

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 oder Bindung an bestimmte Datenformate jWebSocket – Stay Connected

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 WebSockets im Browser jWebSocket – Stay Connected 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 Browser mit FlashBridge Clients für Android, Symbian und Blackberry, iPhone ab Dezember 2010 jWebSocket – Stay Connected

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

jWebSocket Server Server Infrastruktur Engines Tokens Server Filter Plug-Ins Listener jWebSocket – Stay Connected

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? Fertige Libraries verfügbar (Open Source, LGPL) Browser Client in JavaScript jWebSocket.js inkl. FlashBridge und JSON Support jWebSocket Server als.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 Apps in Java Im Prinzip Java 1.5, inkl. Collections, Annotations etc. Googles 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 Java Client für Android, Symbian und BlackBerry jWebSocket – Stay Connected 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 public interface WebSocketClientListener { void processOpened(WebSocketClientEvent aEvent); void processPaket(WebSocketClientEvent aEvent, WebSocketPacket aPacket); void processClosed(WebSocketClientEvent aEvent); }

Java WebSocket Client jWebSocket – Stay Connected 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 }

Android Demo App MainActivity Listview ConfigActivity URL Username Password jWebSocket – Stay Connected

Android Fundamentals jWebSocket – Stay Connected 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

Android - Fotos übertragen Imagetransfer jWebSocket FileSystem Plug-In Benachrichtigung bei Änderungen Binärdaten werden Base64 codiert, Optimierung mit neuem Binärprotokoll umgehend erwartet Snapshot Demo! jWebSocket – Stay Connected

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 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 ! Fragen & Antworten Alexander Schulze Predrag Stojadinovic Forum & Download jWebSocket – Stay Connected