SlideShare a Scribd company logo
Building a meshwork
 of nodeJS servers

to run a live-synced
 one-page WebApp
Who‘s talking to you here?



                            Toni Wagner


                     PhD in molecular biology


     Learned Basic when computers were still breadboxes

I built solutions for my lab and ended up doing it out of my box
https://meinunterricht.de




                            https://mylinkcloud.com
Create a
Desktop-Experience
     Web App
fast...   short initial load time
          no latency for user interactions
          no internal page loads
          live-sync
reliabile...   no data loss
               safe passwords
               safe accounting data
               live-failover
modular...   code modules largely independent
             modules distrubutable across servers
             client plug & play per account type
extendable...   (open) API for client modules
                (open) API for other clients
                readable code
There is nothing like that, so
 let‘s build it from scratch!!!
VisualWeb
jQuery-Ui                   mongoDB

         CLIENT          socket.io         SERVERS

                                     connect         nodeJS
jQuery
                  doT
                                          hook.io
Models
          Search                 &
                     Web     Controllers

Logging              (api)

           CLIENTS                         Payment



                        Mesh
  API
                        Hook
            Files                          DB
between clients and servers

                 between clients and clients

         How to run communication ????????????

                       between client code modules

between server code modules

                           between servers and servers
https://github.com/itsatony/bubPubSub
<div id=„A“>
                       <div id=„B“>
                              <div id=„C“>
                              </div>
                       </div>
                </div>



jQuery(„#A“).bind(„click“, f(e) { alert(„yo“);});


          jQuery(„#C“).trigger(„click“);
branch                  topic


/universe/milkyway/sol/earth/europe/germany/börlin/
/universe/milkyway/sol/earth/europe/germany/
/universe/milkyway/sol/earth/europe/
/universe/milkyway/sol/earth/
/universe/milkyway/sol/
/universe/milkyway/
/universe
/
bubPubSub.subscribe(
         „/client/desktop/show/ “,
         function(pubData) {
                announce(„Now showing desktop „ + pubData.desktop.name);
         },
         options,
         subscriber
  );
                             bubPubSub.publish(
                                    „/client/desktop/show/12345678“,
                                    someData,
                                    options,
                                    publisher
                             );
bubPubSub.subscribe(
       „/client “,
       function(pubData) {
              log(„showing desktop „ + pubData.desktop.name);
       },
       options,
       subscriber
);
bubPubSub.subscribe(
         „/server “,
         function(pubData, pubTopic) {
                socket.send(pubTopic, pubData);
         },
         options,
         subscriber
  );
                             bubPubSub.publish(
                                    „/server/desktop/get/12345678“,
                                    someData,
                                    options,
                                    publisher
                             );
bubPubSub.subscribe(
       „/client “,
       function(pubData, pubTopic) {
               socket.send(pubTopic, pubData);
       },
       options,
       subscriber
);
between clients on different servers


              but SYNC      ??????


        between clients on the same server
bubPubSub

            on top of

HOOOOOOOOOOOOOOOOOOOOOOOK.io
Hook.io propagates events across connected instances
via an event (=== simple pubSub) system.

Hook.io employs socket.io to establish connections
between the connected instances.
All server types are spawnable Ubuntu 12.04 VMs

We connect all servers to the meshwork via IPv6

We have a meshingNeeded Filter sitting at bubPubSub root

We have a hook/bubPubSub adapter to determine receivers
Our ChannelSystem allows event-specific sync
as each Socket has specific channels for

         Socket-specific messages

         Desktop-specific messages

         Item-specific messages

         User-specific messages

         UserGroup-specific messages
DISCUSS PLEASE!
Building a Framework
         on a
Javascript-Only Stack
Create a
Desktop-Experience
     Web App
fast...   short initial load time
          no latency for user interactions
          no internal page loads
          live-sync
reliabile...   no data loss
               safe passwords
               safe accounting data
               live-failover
modular...   code modules largely independent
             modules distrubutable across servers
             client plug & play per account type
extendable...   (open) API for client modules
                (open) API for other clients
                readable code
There is nothing like that, so
 let‘s build it from scratch!!!
VisualWeb
Alright, but
    WhyTheF...
all in JavaScript?
It‘s a lot easier to learn....

   It‘s a lot easier to teach....

       It‘s a lot easier to maintain....

          It‘s a lot easier to extend....
It‘s a lot easier to keep code quality....

   It‘s a lot easier to re-use code....

       It‘s a lot easier to document well....
Chrome and V8 are not going away....

   HTML5 & JS are here to stay.....

       HTML5 is the only winner in the OS fragmentation war....
Javascript has the fastest evolving interpreters...

          Javascript is untyped, just like the web...

            Javascript is JSON...



Javascript is the only language i know anything about !!!
Why the hell should we render anything serverside?


Losing state? What‘s that good for?
Dynamic is not enough!
Super-Hyper-Dynamically interactive is what we want!!



Responsive layouts are a very tiny prison cell.
jQuery-Ui                   mongoDB

         CLIENT          socket.io         SERVERS

                                     connect         nodeJS
jQuery
                  doT
                                          hook.io
We will constantly publish open-source modules.


          Up to now, we released...


               • bubPubSub
               • aList
               • aEscalator
Soon, we will release

A fork of jQueryUI that deals with scaling for drag and drop

A fork of oAuth2 server-sided services following the standards
Later, we will release

The public parts of our API to allow third-party development.

Yoda, our websocket and hook.io focused load balancer.

A description for our new publishing format.
Well, that‘s it for talking into the dark
..

So, why don‘t you Ask and Criticise
so we can discuss a bit?
Reach me via


                                                   i@itsatony.com

http://coffeelog.itsatony.com


                            @itsatony on twitter

                                                    https://github.com/itsatony

       http://about.itsatony.com

                                            I AM ON GEEKLIST
Ad

More Related Content

What's hot (20)

Workshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General OverviewWorkshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General Overview
Visual Engineering
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
Manuel Carrasco Moñino
 
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложенияCodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)
Chang W. Doh
 
SockJS Intro
SockJS IntroSockJS Intro
SockJS Intro
Ngoc Dao
 
React
React React
React
중운 박
 
What's new in Java EE 7? From HTML5 to JMS 2.0
What's new in Java EE 7? From HTML5 to JMS 2.0What's new in Java EE 7? From HTML5 to JMS 2.0
What's new in Java EE 7? From HTML5 to JMS 2.0
Bruno Borges
 
Service Worker 101 (en)
Service Worker 101 (en)Service Worker 101 (en)
Service Worker 101 (en)
Chang W. Doh
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Jeado Ko
 
Workshop 21: React Router
Workshop 21: React RouterWorkshop 21: React Router
Workshop 21: React Router
Visual Engineering
 
Bootstrap과 UI-Bootstrap
Bootstrap과 UI-BootstrapBootstrap과 UI-Bootstrap
Bootstrap과 UI-Bootstrap
WebFrameworks
 
RequireJS
RequireJSRequireJS
RequireJS
Tim Doherty
 
Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...
Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...
Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...
eZ Systems
 
Wt unit 4
Wt unit 4Wt unit 4
Wt unit 4
team11vgnt
 
Cli jbug
Cli jbugCli jbug
Cli jbug
maeste
 
Web Components for Java Developers
Web Components for Java DevelopersWeb Components for Java Developers
Web Components for Java Developers
Joonas Lehtinen
 
iPhonical and model-driven software development for the iPhone
iPhonical and model-driven software development for the iPhoneiPhonical and model-driven software development for the iPhone
iPhonical and model-driven software development for the iPhone
Heiko Behrens
 
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVMAsynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Hugh Anderson
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
Den Odell
 
SVN essentials
SVN essentialsSVN essentials
SVN essentials
Bedis ElAchèche
 
Workshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General OverviewWorkshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General Overview
Visual Engineering
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
Manuel Carrasco Moñino
 
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложенияCodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)
Chang W. Doh
 
SockJS Intro
SockJS IntroSockJS Intro
SockJS Intro
Ngoc Dao
 
What's new in Java EE 7? From HTML5 to JMS 2.0
What's new in Java EE 7? From HTML5 to JMS 2.0What's new in Java EE 7? From HTML5 to JMS 2.0
What's new in Java EE 7? From HTML5 to JMS 2.0
Bruno Borges
 
Service Worker 101 (en)
Service Worker 101 (en)Service Worker 101 (en)
Service Worker 101 (en)
Chang W. Doh
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Jeado Ko
 
Bootstrap과 UI-Bootstrap
Bootstrap과 UI-BootstrapBootstrap과 UI-Bootstrap
Bootstrap과 UI-Bootstrap
WebFrameworks
 
Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...
Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...
Extending Studio - Piotr Nalepa & Kamil Musiał - Presentation at eZ Conferenc...
eZ Systems
 
Cli jbug
Cli jbugCli jbug
Cli jbug
maeste
 
Web Components for Java Developers
Web Components for Java DevelopersWeb Components for Java Developers
Web Components for Java Developers
Joonas Lehtinen
 
iPhonical and model-driven software development for the iPhone
iPhonical and model-driven software development for the iPhoneiPhonical and model-driven software development for the iPhone
iPhonical and model-driven software development for the iPhone
Heiko Behrens
 
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVMAsynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Hugh Anderson
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
Den Odell
 

Similar to VisualWeb - Building a NodeJS Server Meshwork and Full-Javascript Stack Framework. (20)

Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
Bertrand Delacretaz
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
Bertrand Delacretaz
 
Proposal
ProposalProposal
Proposal
Constantine Priemski
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
David Padbury
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.js
Nicholas Jansma
 
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over WebsocketIntroduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
sametmax
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwt
supertoy2015
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon India
Atul Jha
 
NodeJS
NodeJSNodeJS
NodeJS
Predhin Sapru
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
Spike Brehm
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
Yan Cui
 
concept of server-side JavaScript / JS Framework: NODEJS
concept of server-side JavaScript / JS Framework: NODEJSconcept of server-side JavaScript / JS Framework: NODEJS
concept of server-side JavaScript / JS Framework: NODEJS
Kongu Engineering College, Perundurai, Erode
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done Right
Mariusz Nowak
 
Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422
akitsukada
 
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architectureDevoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Ben Wilcock
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Aaron Rosenberg
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
Ron Perlmuter
 
FRAUD DETECTION IN ONLINE AUCTIONING
FRAUD DETECTION IN ONLINE AUCTIONINGFRAUD DETECTION IN ONLINE AUCTIONING
FRAUD DETECTION IN ONLINE AUCTIONING
Satish Chandra
 
(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe
Stefano Di Paola
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
Mahmoud Tolba
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
Bertrand Delacretaz
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
Bertrand Delacretaz
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
David Padbury
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.js
Nicholas Jansma
 
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over WebsocketIntroduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
sametmax
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwt
supertoy2015
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon India
Atul Jha
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
Spike Brehm
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
Yan Cui
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done Right
Mariusz Nowak
 
Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422Real-time Chat Backend on AWS IoT 20160422
Real-time Chat Backend on AWS IoT 20160422
akitsukada
 
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architectureDevoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Ben Wilcock
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
Ron Perlmuter
 
FRAUD DETECTION IN ONLINE AUCTIONING
FRAUD DETECTION IN ONLINE AUCTIONINGFRAUD DETECTION IN ONLINE AUCTIONING
FRAUD DETECTION IN ONLINE AUCTIONING
Satish Chandra
 
(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe
Stefano Di Paola
 
Ad

Recently uploaded (20)

ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Ad

VisualWeb - Building a NodeJS Server Meshwork and Full-Javascript Stack Framework.

  • 1. Building a meshwork of nodeJS servers to run a live-synced one-page WebApp
  • 2. Who‘s talking to you here? Toni Wagner PhD in molecular biology Learned Basic when computers were still breadboxes I built solutions for my lab and ended up doing it out of my box
  • 3. https://meinunterricht.de https://mylinkcloud.com
  • 5. fast... short initial load time no latency for user interactions no internal page loads live-sync
  • 6. reliabile... no data loss safe passwords safe accounting data live-failover
  • 7. modular... code modules largely independent modules distrubutable across servers client plug & play per account type
  • 8. extendable... (open) API for client modules (open) API for other clients readable code
  • 9. There is nothing like that, so let‘s build it from scratch!!!
  • 11. jQuery-Ui mongoDB CLIENT socket.io SERVERS connect nodeJS jQuery doT hook.io
  • 12. Models Search & Web Controllers Logging (api) CLIENTS Payment Mesh API Hook Files DB
  • 13. between clients and servers between clients and clients How to run communication ???????????? between client code modules between server code modules between servers and servers
  • 15. <div id=„A“> <div id=„B“> <div id=„C“> </div> </div> </div> jQuery(„#A“).bind(„click“, f(e) { alert(„yo“);}); jQuery(„#C“).trigger(„click“);
  • 16. branch topic /universe/milkyway/sol/earth/europe/germany/börlin/ /universe/milkyway/sol/earth/europe/germany/ /universe/milkyway/sol/earth/europe/ /universe/milkyway/sol/earth/ /universe/milkyway/sol/ /universe/milkyway/ /universe /
  • 17. bubPubSub.subscribe( „/client/desktop/show/ “, function(pubData) { announce(„Now showing desktop „ + pubData.desktop.name); }, options, subscriber ); bubPubSub.publish( „/client/desktop/show/12345678“, someData, options, publisher ); bubPubSub.subscribe( „/client “, function(pubData) { log(„showing desktop „ + pubData.desktop.name); }, options, subscriber );
  • 18. bubPubSub.subscribe( „/server “, function(pubData, pubTopic) { socket.send(pubTopic, pubData); }, options, subscriber ); bubPubSub.publish( „/server/desktop/get/12345678“, someData, options, publisher ); bubPubSub.subscribe( „/client “, function(pubData, pubTopic) { socket.send(pubTopic, pubData); }, options, subscriber );
  • 19. between clients on different servers but SYNC ?????? between clients on the same server
  • 20. bubPubSub on top of HOOOOOOOOOOOOOOOOOOOOOOOK.io
  • 21. Hook.io propagates events across connected instances via an event (=== simple pubSub) system. Hook.io employs socket.io to establish connections between the connected instances.
  • 22. All server types are spawnable Ubuntu 12.04 VMs We connect all servers to the meshwork via IPv6 We have a meshingNeeded Filter sitting at bubPubSub root We have a hook/bubPubSub adapter to determine receivers
  • 23. Our ChannelSystem allows event-specific sync as each Socket has specific channels for Socket-specific messages Desktop-specific messages Item-specific messages User-specific messages UserGroup-specific messages
  • 25. Building a Framework on a Javascript-Only Stack
  • 27. fast... short initial load time no latency for user interactions no internal page loads live-sync
  • 28. reliabile... no data loss safe passwords safe accounting data live-failover
  • 29. modular... code modules largely independent modules distrubutable across servers client plug & play per account type
  • 30. extendable... (open) API for client modules (open) API for other clients readable code
  • 31. There is nothing like that, so let‘s build it from scratch!!!
  • 33. Alright, but WhyTheF... all in JavaScript?
  • 34. It‘s a lot easier to learn.... It‘s a lot easier to teach.... It‘s a lot easier to maintain.... It‘s a lot easier to extend....
  • 35. It‘s a lot easier to keep code quality.... It‘s a lot easier to re-use code.... It‘s a lot easier to document well....
  • 36. Chrome and V8 are not going away.... HTML5 & JS are here to stay..... HTML5 is the only winner in the OS fragmentation war....
  • 37. Javascript has the fastest evolving interpreters... Javascript is untyped, just like the web... Javascript is JSON... Javascript is the only language i know anything about !!!
  • 38. Why the hell should we render anything serverside? Losing state? What‘s that good for?
  • 39. Dynamic is not enough! Super-Hyper-Dynamically interactive is what we want!! Responsive layouts are a very tiny prison cell.
  • 40. jQuery-Ui mongoDB CLIENT socket.io SERVERS connect nodeJS jQuery doT hook.io
  • 41. We will constantly publish open-source modules. Up to now, we released... • bubPubSub • aList • aEscalator
  • 42. Soon, we will release A fork of jQueryUI that deals with scaling for drag and drop A fork of oAuth2 server-sided services following the standards
  • 43. Later, we will release The public parts of our API to allow third-party development. Yoda, our websocket and hook.io focused load balancer. A description for our new publishing format.
  • 44. Well, that‘s it for talking into the dark .. So, why don‘t you Ask and Criticise so we can discuss a bit?
  • 45. Reach me via [email protected] http://coffeelog.itsatony.com @itsatony on twitter https://github.com/itsatony http://about.itsatony.com I AM ON GEEKLIST