SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
WebSocket my APEX!
Autor:
Kai Donato
2
Facts & Figures
Technologie-orientiert
Branchen-unabhängig
Hauptsitz
Ratingen
240
Beschäftigte
Gründung
1994
Niederlassung
Frankfurt am Main
Ausbildungs-
betrieb
Inhabergeführt
Zertifizierter
Partner von
Oracle,
Microsoft
und SAP
24 Mio. Euro
Umsatz
3
• Kai Donato
• Seit Januar 2014 bei der MT AG in Ratingen
• Berater APEX Development
• Themenverantwortlicher HTML5 und JavaScript
bei der DOAG
• Seit über 10 Jahren in der Web-Entwicklung
• Fachinformatiker für Systemintegration
• UNIX-Server und Netzwerkadministration
Twitter: https://twitter.com/_KaiDonato
LinkedIn: https://de.linkedin.com/in/KaiDonato
Über mich
• Was sind WebSockets?
• Warum WebSockets?
• Wo werden WebSockets bereits eingesetzt?
• Praktische Anwendungsfälle
• Fazit
4
Agenda
Was sind
WebSockets?
• Das Mittel der Wahl für Echtzeit-Anwendungen
• Eine persistente Verbindung zwischen Client(-s) und Server
• Serverseitig und Clientseitig implementiert
• Node.js, Java, Ruby, Python, Erlang, C++, .NET
• Bidirektionale Datenübertragung - auch vom Server aus initiiert!
6
Was sind WebSockets?
I‘ve got
something
for you!
Polling vs. WebSockets
7
© http://streamdata.io/wp-content/uploads/2015/09/Capture-d’écran-2015-09-09-à-14.10.25.png?0bd31a
Warum
WebSockets?
• Der Entwickler kann aus dem üblichen “Request & Response“-Schema
ausbrechen
• Lässt sich (je nach Implementation) als MicroService integrieren
• Polling kann in vielen Fällen performant abgelöst werden
• Mittlerweile von allen* Browsern unterstützt
9
Warum WebSockets?
• Viele Anwender sind Echtzeitbenachrichtigungen gewöhnt
• Push auf mobilen Geräten
• Benachrichtigungen vom Betriebssystem („Sie haben Post!“)
• Bei vielen Clients kann ein vom Server initiierter Datentransfer unnötige Last
reduzieren
10
Warum WebSockets?
Wo werden WebSockets
bereits eingesetzt?
• Soziale Netzwerke
• Chat-Anwendungen (Olark usw.)
• Newsticker
• Collaboration Tools
12
Wo werden WebSockets bereits eingesetzt?
Praktische
Anwendungsfälle
14
Wo werden WebSockets bereits eingesetzt?
• Echtzeitvisualisierung von Twitter-Aktivitäten auf
der APEXconnect 2016
• TV im Foyer (Gewinnspiel)
• Ablösung von Polling
15
Praktische Anwendungsfälle
APEX-Instanz Datenbank
HTTP(S)-Anfrage (Port 80/443) Lesen und Schreiben von Daten
(APEX-Standard-Port)
APEX-Instanz
NodeJS-instanz
Datenbank
HTTP(S)-Anfrage (Port 80/443)
Eintrag von Daten in die Datenbank
(APEX-Standard-Port)
Trigger um die Benachrichtigung vorzunehmen
(beliebiger interner Port)
WebSocket-Port mit ständiger Verbindung(bspw. Port 1337)
Benachrichtigungen vom Server ausgehend zum Client
• Ablösung von Polling
• Chat-Anwendungen
16
Praktische Anwendungsfälle
• Ablösung von Polling
• Chat-Anwendungen
• Collaboration
• Newsfeeds
17
Praktische Anwendungsfälle
Demo
19
WebSocket my
APEX!
21
WebSocket my APEX!
• Clients (WebSocket-Client):
• Melden sich beim Aufbau einer APEX-Seite beim Server an
• Erhalten bei jeder Aktion eines anderen Clients einen
Status
• Server (Node.js – WebSocket-Provider)
• Sammelt alle Client-Informationen und verteilt sie
• Prüft, ob eine Seite für die Bearbeitung gesperrt werden
soll
Dem
22
Collaboration in APEX
23
Collaboration in APEX
• Lightweight (minimaler Ressourcenverbrauch)
• Problemlos erweiterbar (ca. 270000 Pakete auf npmjs.org verfügbar)
• Plattformunabhängig
• Non-Blocking
• Mit nur wenigen Zeilen kann bspw. ein Webserver aufgesetzt werden
24
NodeJS als WebSocket-Provider
• PM2 als Prozessmanagement
• Ca. 140 Zeilen Code für:
• Aufbau eines WebSocket-Servers (inkl. SSL)
• Verwaltung aktiver Clients (Connect und Disconnect)
• Entgegennehmen von Verarbeiten von Nachrichten
• Benachrichtigen aller oder gezielter Clients
25
NodeJS als WebSocket-Provider
26
APEX als Front-End
• APEX-Applikation mit Universal Theme
• Dynamic Action zum initialisieren des
WebSockets (on Page Load)
27
1. Benutzer KAI.DONATO@MT-AG.COM meldet
sich an und wechselt auf die
Datensatzbearbeitung (Seite 4)
2. Benutzer DEMOUSER2 meldet sich auf der
Home-Seite (Seite 1) an
3. Benutzer DEMOUSER2 wechselt auf die
Datensatzbearbeitung (Seite 4)
Vorsicht!
• WebSockets sind zwar weitestgehend unterstützt, jedoch muss immer eine
Fallback-Funktion mit eingeplant werden.
• Mobile Geräte müssen mit besonderer Vorsicht behandelt werden
(Zellenwechsel)
• SSL -> ganz oder gar nicht! „Mischkulturen“ werden von Browsern nicht
akzeptiert
• Für WebSocket-Verbindungen müssen zusätzliche Ports freigegeben werden
• Bei Verbindungen über Proxys müssen WebSockets berücksichtigt werden
29
Vorsicht!
👀👀
• Selektive Benachrichtigungen über Statusänderungen (weniger Overhead)
• Einbeziehen von mehr als einem Bearbeiter (Mit direktem Chat?)
• Direkte Übermittlung von Eingaben über die WebSocket-Verbindung
• Hervorheben einzelner Bereiche für Hinweise an den Kollegen
• Erkennung von „Idle“ - Status - Der Bearbeiter ist gerade nicht aktiv
• Anbindung des Node.js-Servers an die Datenbank für Logging und weitere
Funktionalitäten
• ...
30
Mögliche Erweiterungen
💪
• Echtzeitanwendungen profitieren von WebSockets
• Ein guter Ersatz für Polling
• Mittlerweile nicht mehr nur „experimentell“
31
Fazit
32
One Last Thing...
• WebSocket-Plugin für APEX 5
• Coming next month...
33
Vorträge der MT AG
Dienstag, 26. April Mittwoch, 27. April Donnerstag, 28. April
14.00 Uhr | Music Hall 1
Echtzeitvisualisierung von Twitter und Co.
| Kai Donato & Oliver Lemm
16.15 Uhr | Music Hall 2
12.00 Uhr | Soul
14.00 Uhr | Music Hall 3
14.00 Uhr | Jazz 1
16.15 Uhr | Music Hall 1
11.00 Uhr | Music Hall 1
11.00 Uhr | Music Hall 3
14.00 Uhr | Music Hall 2
Universal Theme vs. APEX mobile vs.
MAF
| Davide Groppuso & Steven Grzbielok
WebSocket my APEX!
| Kai Donato
Single Sign-On für alle!
| Niels de Bruijn
Workshop: Einstieg in die aktuelle Version
von Oracle Application Express
| Oliver Lemm
Wie versioniere ich in APEX?
| Oliver Lemm
Interactive Reports Downloads Reloaded
| Moritz Klein
Zeitreisen mit PL/SQL
| Daniel Dyla
APEX for mobile only. Gewusst wie!
| Alexej Schneider
34
Vielen Dank!
@_KaiDonato
https://de.linkedin.com/in/KaiDonato

Weitere ähnliche Inhalte

Was ist angesagt?

Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Software
 
Heroku – Eine Cloud Application Platform
Heroku – Eine Cloud Application PlatformHeroku – Eine Cloud Application Platform
Heroku – Eine Cloud Application PlatformOnCommerce
 
Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)
Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)
Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)NETWAYS
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...Marc Müller
 
node.js - Eine kurze Einführung
node.js - Eine kurze Einführungnode.js - Eine kurze Einführung
node.js - Eine kurze Einführungnodeio
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)
Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)
Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)NETWAYS
 
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
2010 - Basta!: REST mit WCF 4, Silverlight und AJAXDaniel Fisher
 
Raspberry PI 4 Freifunk Offloader
Raspberry PI 4 Freifunk OffloaderRaspberry PI 4 Freifunk Offloader
Raspberry PI 4 Freifunk OffloaderAnnika Wickert
 
Cloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen RechenzentrumCloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen RechenzentrumTEC Campus
 
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Manfred Steyer
 
TFS 2015: Build und Release der neuen Generation
TFS 2015: Build und Release der neuen GenerationTFS 2015: Build und Release der neuen Generation
TFS 2015: Build und Release der neuen GenerationNico Orschel
 
Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016)
Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016) Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016)
Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016) NETWAYS
 
Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Lennart Passig
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
Performance. Webmontag. Frankfurt.
Performance. Webmontag. Frankfurt.Performance. Webmontag. Frankfurt.
Performance. Webmontag. Frankfurt.Martin Kliehm
 
Foreman: Docker Integration (Webinar vom 05. Oktober_2016)
Foreman: Docker Integration (Webinar vom 05. Oktober_2016)Foreman: Docker Integration (Webinar vom 05. Oktober_2016)
Foreman: Docker Integration (Webinar vom 05. Oktober_2016)NETWAYS
 

Was ist angesagt? (19)

Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
 
Heroku – Eine Cloud Application Platform
Heroku – Eine Cloud Application PlatformHeroku – Eine Cloud Application Platform
Heroku – Eine Cloud Application Platform
 
node.js Einführung
node.js Einführungnode.js Einführung
node.js Einführung
 
Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)
Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)
Icinga 2: Grundaufbau einer Monitoring Umgebung (Webinar vom 01. August 2018)
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
 
node.js - Eine kurze Einführung
node.js - Eine kurze Einführungnode.js - Eine kurze Einführung
node.js - Eine kurze Einführung
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)
Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)
Netways NWS: Die neue SaaS Plattform (Webinar vom 15. März 2017)
 
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
 
Raspberry PI 4 Freifunk Offloader
Raspberry PI 4 Freifunk OffloaderRaspberry PI 4 Freifunk Offloader
Raspberry PI 4 Freifunk Offloader
 
PHP5 und Oracle
PHP5 und OraclePHP5 und Oracle
PHP5 und Oracle
 
Cloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen RechenzentrumCloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
Cloud-Native experience mit einer Container-Plattform im eigenen Rechenzentrum
 
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
Überblick zu MVC6 auf DevCon der Fox-Pro-Usergroup in Frankfurt, Nov 2015
 
TFS 2015: Build und Release der neuen Generation
TFS 2015: Build und Release der neuen GenerationTFS 2015: Build und Release der neuen Generation
TFS 2015: Build und Release der neuen Generation
 
Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016)
Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016) Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016)
Icinga 2: Einrichten von Notifications (Webinar vom 21. Januar 2016)
 
Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
Performance. Webmontag. Frankfurt.
Performance. Webmontag. Frankfurt.Performance. Webmontag. Frankfurt.
Performance. Webmontag. Frankfurt.
 
Foreman: Docker Integration (Webinar vom 05. Oktober_2016)
Foreman: Docker Integration (Webinar vom 05. Oktober_2016)Foreman: Docker Integration (Webinar vom 05. Oktober_2016)
Foreman: Docker Integration (Webinar vom 05. Oktober_2016)
 

Ähnlich wie WebSocket my APEX!

Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenDavid Schneider
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsStefan Adolf
 
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...Michael Kirst-Neshva
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsDirk Steinkopf
 
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...OPEN KNOWLEDGE GmbH
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Microservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSMicroservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSRalf Ernst
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftDavid Schneider
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcosRalf Ernst
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DNUG e.V.
 
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...Niels de Bruijn
 
Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)
Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)
Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)NETWAYS
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAsQAware GmbH
 
Webinar SharePoint auf AWS
Webinar SharePoint auf AWSWebinar SharePoint auf AWS
Webinar SharePoint auf AWSAWS Germany
 

Ähnlich wie WebSocket my APEX! (20)

Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
 
Chatbot Hackathon Slidedeck
Chatbot Hackathon SlidedeckChatbot Hackathon Slidedeck
Chatbot Hackathon Slidedeck
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
 
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
 
WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-Tools
 
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Microservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSMicroservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OS
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcos
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
 
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
MT AG Rapid Application Development mit APEX 5 (Important: latest version on ...
 
Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)
Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)
Icinga Web 2: Das neue Interface (Webinar vom 09. Dezember 2015)
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Webinar SharePoint auf AWS
Webinar SharePoint auf AWSWebinar SharePoint auf AWS
Webinar SharePoint auf AWS
 

Mehr von Kai Donato

Testing APEX apps At A Glance
Testing APEX apps At A GlanceTesting APEX apps At A Glance
Testing APEX apps At A GlanceKai Donato
 
APEX Offline – The missing Link
APEX Offline – The missing LinkAPEX Offline – The missing Link
APEX Offline – The missing LinkKai Donato
 
>> How toTech-Forward >>
>> How toTech-Forward >>>> How toTech-Forward >>
>> How toTech-Forward >>Kai Donato
 
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehenICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehenKai Donato
 
Click, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX ApplicationsClick, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX ApplicationsKai Donato
 
Full Stack Development mit JavaScript
Full Stack Development mit JavaScriptFull Stack Development mit JavaScript
Full Stack Development mit JavaScriptKai Donato
 
APEX and additional Templating Engines
APEX and additional Templating EnginesAPEX and additional Templating Engines
APEX and additional Templating EnginesKai Donato
 
Professional JavaScript Error-Logging
Professional JavaScript Error-LoggingProfessional JavaScript Error-Logging
Professional JavaScript Error-LoggingKai Donato
 
Managing Node.js Instances with Oracle APEX
Managing Node.js Instances with Oracle APEXManaging Node.js Instances with Oracle APEX
Managing Node.js Instances with Oracle APEXKai Donato
 

Mehr von Kai Donato (9)

Testing APEX apps At A Glance
Testing APEX apps At A GlanceTesting APEX apps At A Glance
Testing APEX apps At A Glance
 
APEX Offline – The missing Link
APEX Offline – The missing LinkAPEX Offline – The missing Link
APEX Offline – The missing Link
 
>> How toTech-Forward >>
>> How toTech-Forward >>>> How toTech-Forward >>
>> How toTech-Forward >>
 
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehenICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
 
Click, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX ApplicationsClick, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX Applications
 
Full Stack Development mit JavaScript
Full Stack Development mit JavaScriptFull Stack Development mit JavaScript
Full Stack Development mit JavaScript
 
APEX and additional Templating Engines
APEX and additional Templating EnginesAPEX and additional Templating Engines
APEX and additional Templating Engines
 
Professional JavaScript Error-Logging
Professional JavaScript Error-LoggingProfessional JavaScript Error-Logging
Professional JavaScript Error-Logging
 
Managing Node.js Instances with Oracle APEX
Managing Node.js Instances with Oracle APEXManaging Node.js Instances with Oracle APEX
Managing Node.js Instances with Oracle APEX
 

WebSocket my APEX!

  • 2. 2 Facts & Figures Technologie-orientiert Branchen-unabhängig Hauptsitz Ratingen 240 Beschäftigte Gründung 1994 Niederlassung Frankfurt am Main Ausbildungs- betrieb Inhabergeführt Zertifizierter Partner von Oracle, Microsoft und SAP 24 Mio. Euro Umsatz
  • 3. 3 • Kai Donato • Seit Januar 2014 bei der MT AG in Ratingen • Berater APEX Development • Themenverantwortlicher HTML5 und JavaScript bei der DOAG • Seit über 10 Jahren in der Web-Entwicklung • Fachinformatiker für Systemintegration • UNIX-Server und Netzwerkadministration Twitter: https://twitter.com/_KaiDonato LinkedIn: https://de.linkedin.com/in/KaiDonato Über mich
  • 4. • Was sind WebSockets? • Warum WebSockets? • Wo werden WebSockets bereits eingesetzt? • Praktische Anwendungsfälle • Fazit 4 Agenda
  • 6. • Das Mittel der Wahl für Echtzeit-Anwendungen • Eine persistente Verbindung zwischen Client(-s) und Server • Serverseitig und Clientseitig implementiert • Node.js, Java, Ruby, Python, Erlang, C++, .NET • Bidirektionale Datenübertragung - auch vom Server aus initiiert! 6 Was sind WebSockets? I‘ve got something for you!
  • 7. Polling vs. WebSockets 7 © http://streamdata.io/wp-content/uploads/2015/09/Capture-d’écran-2015-09-09-à-14.10.25.png?0bd31a
  • 9. • Der Entwickler kann aus dem üblichen “Request & Response“-Schema ausbrechen • Lässt sich (je nach Implementation) als MicroService integrieren • Polling kann in vielen Fällen performant abgelöst werden • Mittlerweile von allen* Browsern unterstützt 9 Warum WebSockets?
  • 10. • Viele Anwender sind Echtzeitbenachrichtigungen gewöhnt • Push auf mobilen Geräten • Benachrichtigungen vom Betriebssystem („Sie haben Post!“) • Bei vielen Clients kann ein vom Server initiierter Datentransfer unnötige Last reduzieren 10 Warum WebSockets?
  • 12. • Soziale Netzwerke • Chat-Anwendungen (Olark usw.) • Newsticker • Collaboration Tools 12 Wo werden WebSockets bereits eingesetzt?
  • 14. 14 Wo werden WebSockets bereits eingesetzt? • Echtzeitvisualisierung von Twitter-Aktivitäten auf der APEXconnect 2016 • TV im Foyer (Gewinnspiel)
  • 15. • Ablösung von Polling 15 Praktische Anwendungsfälle APEX-Instanz Datenbank HTTP(S)-Anfrage (Port 80/443) Lesen und Schreiben von Daten (APEX-Standard-Port) APEX-Instanz NodeJS-instanz Datenbank HTTP(S)-Anfrage (Port 80/443) Eintrag von Daten in die Datenbank (APEX-Standard-Port) Trigger um die Benachrichtigung vorzunehmen (beliebiger interner Port) WebSocket-Port mit ständiger Verbindung(bspw. Port 1337) Benachrichtigungen vom Server ausgehend zum Client
  • 16. • Ablösung von Polling • Chat-Anwendungen 16 Praktische Anwendungsfälle
  • 17. • Ablösung von Polling • Chat-Anwendungen • Collaboration • Newsfeeds 17 Praktische Anwendungsfälle
  • 18. Demo
  • 19. 19
  • 21. 21 WebSocket my APEX! • Clients (WebSocket-Client): • Melden sich beim Aufbau einer APEX-Seite beim Server an • Erhalten bei jeder Aktion eines anderen Clients einen Status • Server (Node.js – WebSocket-Provider) • Sammelt alle Client-Informationen und verteilt sie • Prüft, ob eine Seite für die Bearbeitung gesperrt werden soll
  • 24. • Lightweight (minimaler Ressourcenverbrauch) • Problemlos erweiterbar (ca. 270000 Pakete auf npmjs.org verfügbar) • Plattformunabhängig • Non-Blocking • Mit nur wenigen Zeilen kann bspw. ein Webserver aufgesetzt werden 24 NodeJS als WebSocket-Provider
  • 25. • PM2 als Prozessmanagement • Ca. 140 Zeilen Code für: • Aufbau eines WebSocket-Servers (inkl. SSL) • Verwaltung aktiver Clients (Connect und Disconnect) • Entgegennehmen von Verarbeiten von Nachrichten • Benachrichtigen aller oder gezielter Clients 25 NodeJS als WebSocket-Provider
  • 26. 26 APEX als Front-End • APEX-Applikation mit Universal Theme • Dynamic Action zum initialisieren des WebSockets (on Page Load)
  • 27. 27 1. Benutzer KAI.DONATO@MT-AG.COM meldet sich an und wechselt auf die Datensatzbearbeitung (Seite 4) 2. Benutzer DEMOUSER2 meldet sich auf der Home-Seite (Seite 1) an 3. Benutzer DEMOUSER2 wechselt auf die Datensatzbearbeitung (Seite 4)
  • 29. • WebSockets sind zwar weitestgehend unterstützt, jedoch muss immer eine Fallback-Funktion mit eingeplant werden. • Mobile Geräte müssen mit besonderer Vorsicht behandelt werden (Zellenwechsel) • SSL -> ganz oder gar nicht! „Mischkulturen“ werden von Browsern nicht akzeptiert • Für WebSocket-Verbindungen müssen zusätzliche Ports freigegeben werden • Bei Verbindungen über Proxys müssen WebSockets berücksichtigt werden 29 Vorsicht! 👀👀
  • 30. • Selektive Benachrichtigungen über Statusänderungen (weniger Overhead) • Einbeziehen von mehr als einem Bearbeiter (Mit direktem Chat?) • Direkte Übermittlung von Eingaben über die WebSocket-Verbindung • Hervorheben einzelner Bereiche für Hinweise an den Kollegen • Erkennung von „Idle“ - Status - Der Bearbeiter ist gerade nicht aktiv • Anbindung des Node.js-Servers an die Datenbank für Logging und weitere Funktionalitäten • ... 30 Mögliche Erweiterungen 💪
  • 31. • Echtzeitanwendungen profitieren von WebSockets • Ein guter Ersatz für Polling • Mittlerweile nicht mehr nur „experimentell“ 31 Fazit
  • 32. 32 One Last Thing... • WebSocket-Plugin für APEX 5 • Coming next month...
  • 33. 33 Vorträge der MT AG Dienstag, 26. April Mittwoch, 27. April Donnerstag, 28. April 14.00 Uhr | Music Hall 1 Echtzeitvisualisierung von Twitter und Co. | Kai Donato & Oliver Lemm 16.15 Uhr | Music Hall 2 12.00 Uhr | Soul 14.00 Uhr | Music Hall 3 14.00 Uhr | Jazz 1 16.15 Uhr | Music Hall 1 11.00 Uhr | Music Hall 1 11.00 Uhr | Music Hall 3 14.00 Uhr | Music Hall 2 Universal Theme vs. APEX mobile vs. MAF | Davide Groppuso & Steven Grzbielok WebSocket my APEX! | Kai Donato Single Sign-On für alle! | Niels de Bruijn Workshop: Einstieg in die aktuelle Version von Oracle Application Express | Oliver Lemm Wie versioniere ich in APEX? | Oliver Lemm Interactive Reports Downloads Reloaded | Moritz Klein Zeitreisen mit PL/SQL | Daniel Dyla APEX for mobile only. Gewusst wie! | Alexej Schneider