SlideShare une entreprise Scribd logo
1  sur  44
By Pushing Server Data,By Pushing Server Data,
We Push the Web ForwardWe Push the Web Forward
Presented by
Philip Ross
CometComet
co-founder of
Who Am I
• Co-Founder of NOLOH
– Awesome web development platform
– Engineer there about 6 years
– Architected and developed their Comet functionality
– Along the way, came up with some possibly interesting ideas
(and working prototypes) of my own
• Contributor to php | architect
• Hobbies
– Mathematical logic, set theory, etc...
– Cheese and beer
– Going to cool places like Barcelona
Whoa! Deep, man...
Whoa! Deep, man...
My Talk
• Trying something different
• Not that many implementation details
History of Comet
History of Comet - HTTP
• Web's conventional client
request (or "pull") of data
–HTTP
History of Comet – Server Push
• Server push of certain
available data to client
– AJAX
– Web 2.0 movement = "Comet"
(Alex Russell, 2006)
History of Comet – Early Solutions
• Netscape 1.1 native support
(1995!)
• Java applets
Usefulness
Niche Applications
• E-mail web client
• Webchat
• Collaboration tools
• Games
• To show a pointless, yet dazzling, demo during
your Comet talk at a PHP convention!
Broader Applications
• News / Blogs
• Forums
• Everything with content, really!
• A better every-day web user experience
Why Isn’t It Everywhere?
• Way too difficult to implement
• Not at all approachable to the less skilled
developers
• Comet discussions keep focusing on the low-
level implementation details
• Wheel is constantly reinvented
• Insufficient progress in the direction of
abstraction
Costs
Costs
• Honestly, server hit can
sometimes get significant
– Bandwidth
– Network
– CPU
– Memory
Costs
• Highly depends on the problem
parameters / specs
–Scalability
–Freshness of data
–Frequency of changes
•period = 1 / frequency
Costs
• Demands on client
environment
• Implementation labor!
Many Ways to Skin a Cat
Many Ways to Skin a Cat
• Various different implementations /
"transport protocols"
– Unique advantages and appropriate
times to use them
• Polling, Long Polling, Streaming,
Web Sockets
– Specific implementations (e.g., page
streaming vs. service streaming)
Polling
Polling
• Client periodically connects to
server to check for updates
• Many connections implies that
the largest hit to server
performance will be of the
network variety
Polling
• The lowerlower the duration is than
the period,
the poorerpoorer the performance will
quickly become
• The higherhigher the duration is than
the period,
the poorerpoorer the freshness of data
Polling
• Supported everywhere
• Very easy to implement
• Good solution for low freshness /
low frequency needs
Long Polling
Long Polling
• Client connects to server, but
keeps connection open until
server has an update
• After update, connection is
closed, and after a duration, the
process is repeated
Long Polling
• Many simultaneous pending
connections means server CPU
and memory might take a hit
• As frequency becomes high, long
polling becomes like polling,
taking a considerable network hit
on server
Long Polling
• Supported almost everywhere
• Not that hard to implement
• Solid, reliable choice for many
applications
Streaming
Streaming
• Client connects to server and
stays connected for as long as it
can
• Server keeps feeding updates
through the same connection as
they become available
Streaming
• Many simultaneous pending
connections means server CPU
and memory might take a hit
• Very efficient network-wise
• Great for high-frequency (almost
real-time) applications
Streaming
• Not supported by servers that can't flush
output buffers
• Nightmare to implement
– Different browsers require various
different hacks
– IE requires altogether different "htmlfile"
solution
HTML5 Web Sockets
HTML5 Web Sockets
• Browser can actually open and listen on ports,
effectively trading the client/server role as it
sees fit
• Server can contact browser directly, precisely
when necessary without extra overhead
• Perfect for low-medium frequency
applications
– For real-time levels, streaming might still be the way to go
HTML5 Web Sockets
• Currently in "Working Draft" phase
• Support remains extremely limited
• Even when supported in all browsers,
supporting legacy browsers will still be an issue
Grid courtesy of http://caniuse.com/
How I Think Frameworks Should Do It
How I Think Frameworks Should Do It
• No necessary server installation
– Supporting servers optionally is nice
• Support for all reasonably major browsers
(e.g., IE6+)
• Since different transport protocols are fit for
different applications, they should all be
supported
– ContrastContrast: many tools today support only long
polling
How I Think Frameworks Should Do It
• Hide / abstract away as much of the communication
layer as possible
– ContrastContrast: many tools are server-only or client-only.
Developer must still be very aware of the extreme
complexities of client/server interaction
• Hide / abstract away as much of the data layer as
possible
– Developer merely indicates where the data is
– Rely on framework to detect when data has changed
– Event-driven: Have the framework invoke your callback
– ContrastContrast: many tools require reuse of same data logic
Comet Frameworks
• XAJAX Comet plugin
• phet
• phpwebsocket
• websocket.js
• jQuery plugin
• socket.io and node.js
• jWebSocket
• NOLOH
How NOLOH Does It
How NOLOH Does It
• Listener Control
– Intended to listen to a source of data, and upon
detecting changes, it triggers some defined
method
– A very unintimidating thing to throw into any
application for developers of a very wide range of
skill levels
How NOLOH Does It
• Source property
– File, database query, web service, a method that
returns data, or you can write your own
• Update property (Event)
– Gets triggered upon detecting changes
• Transport property [optional]
– Currently can be: Polling, Long Polling, or
Streaming. Others are on the way
Original Research
Original Research
• Similar to polling except server will not
actually establish connection with browser
when there are no updates
• Server will protect itself from browser
connections in the same way firewalls protect
against denial-of-service attacks
• When server has updates, then it will listen to
browsers
Original Research
• Great for low-medium frequency
applications
–Especially in the absence of availability of
web sockets
• Still experimental, but early tests look
promising
Questions
¿ ?
• Check out NOLOH
– http://www.noloh.com
– Intro talk “High Performance WebApps Faster &
Easier with NOLOH” tomorrow by Asher Snyder
• Contact me at pross@noloh.com
Thank You
Presented by
Philip Ross

Contenu connexe

Tendances

Apache BookKeeper Distributed Store- a Salesforce use case
Apache BookKeeper Distributed Store- a Salesforce use caseApache BookKeeper Distributed Store- a Salesforce use case
Apache BookKeeper Distributed Store- a Salesforce use caseSalesforce Engineering
 
Olympya web-tools 2011
Olympya web-tools 2011Olympya web-tools 2011
Olympya web-tools 2011Paulo Mattos
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsRonny López
 
4th Lecture: JSP and such
4th Lecture:  JSP and such4th Lecture:  JSP and such
4th Lecture: JSP and suchManolis Vavalis
 
Cloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical OverviewCloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical OverviewMessaging Meetup
 
20130714 php matsuri - highly available php
20130714   php matsuri - highly available php20130714   php matsuri - highly available php
20130714 php matsuri - highly available phpGraham Weldon
 
Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid C2B2 Consulting
 
Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandC2B2 Consulting
 
Infinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLInfinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLManik Surtani
 
IWMW 1997: Database-WWW Integration
IWMW 1997: Database-WWW IntegrationIWMW 1997: Database-WWW Integration
IWMW 1997: Database-WWW IntegrationIWMW
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsAchievers Tech
 
Introduction to WebSockets Presentation
Introduction to WebSockets PresentationIntroduction to WebSockets Presentation
Introduction to WebSockets PresentationJulien LaPointe
 
NoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOONoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOOJames Hollingworth
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsAchievers Tech
 
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)
Parallel and Asynchronous Programming -  ITProDevConnections 2012 (Greek)Parallel and Asynchronous Programming -  ITProDevConnections 2012 (Greek)
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)Panagiotis Kanavos
 
Esc 209 slides-doin
Esc 209 slides-doinEsc 209 slides-doin
Esc 209 slides-doinJonny Doin
 

Tendances (20)

Apache BookKeeper Distributed Store- a Salesforce use case
Apache BookKeeper Distributed Store- a Salesforce use caseApache BookKeeper Distributed Store- a Salesforce use case
Apache BookKeeper Distributed Store- a Salesforce use case
 
Olympya web-tools 2011
Olympya web-tools 2011Olympya web-tools 2011
Olympya web-tools 2011
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP Applications
 
4th Lecture: JSP and such
4th Lecture:  JSP and such4th Lecture:  JSP and such
4th Lecture: JSP and such
 
Cloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical OverviewCloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical Overview
 
20130714 php matsuri - highly available php
20130714   php matsuri - highly available php20130714   php matsuri - highly available php
20130714 php matsuri - highly available php
 
Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid
 
Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx Poland
 
Infinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLInfinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQL
 
IWMW 1997: Database-WWW Integration
IWMW 1997: Database-WWW IntegrationIWMW 1997: Database-WWW Integration
IWMW 1997: Database-WWW Integration
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
Lo4
Lo4Lo4
Lo4
 
Mini-Training: Let's have a rest
Mini-Training: Let's have a restMini-Training: Let's have a rest
Mini-Training: Let's have a rest
 
Introduction to WebSockets Presentation
Introduction to WebSockets PresentationIntroduction to WebSockets Presentation
Introduction to WebSockets Presentation
 
NoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOONoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOO
 
Hadoop in a Windows Shop - CHUG - 20120416
Hadoop in a Windows Shop - CHUG - 20120416Hadoop in a Windows Shop - CHUG - 20120416
Hadoop in a Windows Shop - CHUG - 20120416
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)
Parallel and Asynchronous Programming -  ITProDevConnections 2012 (Greek)Parallel and Asynchronous Programming -  ITProDevConnections 2012 (Greek)
Parallel and Asynchronous Programming - ITProDevConnections 2012 (Greek)
 
What's up?
What's up?What's up?
What's up?
 
Esc 209 slides-doin
Esc 209 slides-doinEsc 209 slides-doin
Esc 209 slides-doin
 

Similaire à Comet: by pushing server data, we push the web forward

StoryCode Tech Immersion 1
StoryCode Tech Immersion 1StoryCode Tech Immersion 1
StoryCode Tech Immersion 1storycode
 
From Device to Data Center to Insights: Architectural Considerations for the ...
From Device to Data Center to Insights: Architectural Considerations for the ...From Device to Data Center to Insights: Architectural Considerations for the ...
From Device to Data Center to Insights: Architectural Considerations for the ...P. Taylor Goetz
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotchaphegaro
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSaspyker
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?CQD
 
Web Planning an Effective Integration with a 3rd party API to Scale
Web Planning an Effective Integration with a 3rd party API to ScaleWeb Planning an Effective Integration with a 3rd party API to Scale
Web Planning an Effective Integration with a 3rd party API to Scalebrettwise
 
Introduction to the Internet and Web.pptx
Introduction to the Internet and Web.pptxIntroduction to the Internet and Web.pptx
Introduction to the Internet and Web.pptxhishamousl
 
www | HTTP | HTML - Tutorial
www | HTTP | HTML - Tutorialwww | HTTP | HTML - Tutorial
www | HTTP | HTML - TutorialMSA Technosoft
 
Measuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrongMeasuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrongFastly
 
CNIT 129S: Ch 3: Web Application Technologies
CNIT 129S: Ch 3: Web Application TechnologiesCNIT 129S: Ch 3: Web Application Technologies
CNIT 129S: Ch 3: Web Application TechnologiesSam Bowne
 
Going Mobile with HTML5
Going Mobile with HTML5Going Mobile with HTML5
Going Mobile with HTML5John Reiser
 
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20Nathan O'Hanlon
 
CNIT 129S - Ch 3: Web Application Technologies
CNIT 129S - Ch 3: Web Application TechnologiesCNIT 129S - Ch 3: Web Application Technologies
CNIT 129S - Ch 3: Web Application TechnologiesSam Bowne
 
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedInJay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedInLinkedIn
 
Building Scalable Big Data Infrastructure Using Open Source Software Presenta...
Building Scalable Big Data Infrastructure Using Open Source Software Presenta...Building Scalable Big Data Infrastructure Using Open Source Software Presenta...
Building Scalable Big Data Infrastructure Using Open Source Software Presenta...ssuserd3a367
 
RESTful web
RESTful webRESTful web
RESTful webAlvin Qi
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyserAlex Moskvin
 

Similaire à Comet: by pushing server data, we push the web forward (20)

StoryCode Tech Immersion 1
StoryCode Tech Immersion 1StoryCode Tech Immersion 1
StoryCode Tech Immersion 1
 
Web Fendamentals
Web FendamentalsWeb Fendamentals
Web Fendamentals
 
From Device to Data Center to Insights
From Device to Data Center to InsightsFrom Device to Data Center to Insights
From Device to Data Center to Insights
 
From Device to Data Center to Insights: Architectural Considerations for the ...
From Device to Data Center to Insights: Architectural Considerations for the ...From Device to Data Center to Insights: Architectural Considerations for the ...
From Device to Data Center to Insights: Architectural Considerations for the ...
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotcha
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSS
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?
 
Web Planning an Effective Integration with a 3rd party API to Scale
Web Planning an Effective Integration with a 3rd party API to ScaleWeb Planning an Effective Integration with a 3rd party API to Scale
Web Planning an Effective Integration with a 3rd party API to Scale
 
Introduction to the Internet and Web.pptx
Introduction to the Internet and Web.pptxIntroduction to the Internet and Web.pptx
Introduction to the Internet and Web.pptx
 
www | HTTP | HTML - Tutorial
www | HTTP | HTML - Tutorialwww | HTTP | HTML - Tutorial
www | HTTP | HTML - Tutorial
 
Measuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrongMeasuring CDN performance and why you're doing it wrong
Measuring CDN performance and why you're doing it wrong
 
CNIT 129S: Ch 3: Web Application Technologies
CNIT 129S: Ch 3: Web Application TechnologiesCNIT 129S: Ch 3: Web Application Technologies
CNIT 129S: Ch 3: Web Application Technologies
 
Going Mobile with HTML5
Going Mobile with HTML5Going Mobile with HTML5
Going Mobile with HTML5
 
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
 
CNIT 129S - Ch 3: Web Application Technologies
CNIT 129S - Ch 3: Web Application TechnologiesCNIT 129S - Ch 3: Web Application Technologies
CNIT 129S - Ch 3: Web Application Technologies
 
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedInJay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
Jay Kreps on Project Voldemort Scaling Simple Storage At LinkedIn
 
Real time web apps
Real time web appsReal time web apps
Real time web apps
 
Building Scalable Big Data Infrastructure Using Open Source Software Presenta...
Building Scalable Big Data Infrastructure Using Open Source Software Presenta...Building Scalable Big Data Infrastructure Using Open Source Software Presenta...
Building Scalable Big Data Infrastructure Using Open Source Software Presenta...
 
RESTful web
RESTful webRESTful web
RESTful web
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyser
 

Dernier

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Dernier (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

Comet: by pushing server data, we push the web forward

  • 1. By Pushing Server Data,By Pushing Server Data, We Push the Web ForwardWe Push the Web Forward Presented by Philip Ross CometComet co-founder of
  • 2. Who Am I • Co-Founder of NOLOH – Awesome web development platform – Engineer there about 6 years – Architected and developed their Comet functionality – Along the way, came up with some possibly interesting ideas (and working prototypes) of my own • Contributor to php | architect • Hobbies – Mathematical logic, set theory, etc... – Cheese and beer – Going to cool places like Barcelona Whoa! Deep, man... Whoa! Deep, man...
  • 3. My Talk • Trying something different • Not that many implementation details
  • 5. History of Comet - HTTP • Web's conventional client request (or "pull") of data –HTTP
  • 6. History of Comet – Server Push • Server push of certain available data to client – AJAX – Web 2.0 movement = "Comet" (Alex Russell, 2006)
  • 7. History of Comet – Early Solutions • Netscape 1.1 native support (1995!) • Java applets
  • 9. Niche Applications • E-mail web client • Webchat • Collaboration tools • Games • To show a pointless, yet dazzling, demo during your Comet talk at a PHP convention!
  • 10. Broader Applications • News / Blogs • Forums • Everything with content, really! • A better every-day web user experience
  • 11. Why Isn’t It Everywhere? • Way too difficult to implement • Not at all approachable to the less skilled developers • Comet discussions keep focusing on the low- level implementation details • Wheel is constantly reinvented • Insufficient progress in the direction of abstraction
  • 12. Costs
  • 13. Costs • Honestly, server hit can sometimes get significant – Bandwidth – Network – CPU – Memory
  • 14. Costs • Highly depends on the problem parameters / specs –Scalability –Freshness of data –Frequency of changes •period = 1 / frequency
  • 15. Costs • Demands on client environment • Implementation labor!
  • 16. Many Ways to Skin a Cat
  • 17. Many Ways to Skin a Cat • Various different implementations / "transport protocols" – Unique advantages and appropriate times to use them • Polling, Long Polling, Streaming, Web Sockets – Specific implementations (e.g., page streaming vs. service streaming)
  • 19. Polling • Client periodically connects to server to check for updates • Many connections implies that the largest hit to server performance will be of the network variety
  • 20. Polling • The lowerlower the duration is than the period, the poorerpoorer the performance will quickly become • The higherhigher the duration is than the period, the poorerpoorer the freshness of data
  • 21. Polling • Supported everywhere • Very easy to implement • Good solution for low freshness / low frequency needs
  • 23. Long Polling • Client connects to server, but keeps connection open until server has an update • After update, connection is closed, and after a duration, the process is repeated
  • 24. Long Polling • Many simultaneous pending connections means server CPU and memory might take a hit • As frequency becomes high, long polling becomes like polling, taking a considerable network hit on server
  • 25. Long Polling • Supported almost everywhere • Not that hard to implement • Solid, reliable choice for many applications
  • 27. Streaming • Client connects to server and stays connected for as long as it can • Server keeps feeding updates through the same connection as they become available
  • 28. Streaming • Many simultaneous pending connections means server CPU and memory might take a hit • Very efficient network-wise • Great for high-frequency (almost real-time) applications
  • 29. Streaming • Not supported by servers that can't flush output buffers • Nightmare to implement – Different browsers require various different hacks – IE requires altogether different "htmlfile" solution
  • 31. HTML5 Web Sockets • Browser can actually open and listen on ports, effectively trading the client/server role as it sees fit • Server can contact browser directly, precisely when necessary without extra overhead • Perfect for low-medium frequency applications – For real-time levels, streaming might still be the way to go
  • 32. HTML5 Web Sockets • Currently in "Working Draft" phase • Support remains extremely limited • Even when supported in all browsers, supporting legacy browsers will still be an issue Grid courtesy of http://caniuse.com/
  • 33. How I Think Frameworks Should Do It
  • 34. How I Think Frameworks Should Do It • No necessary server installation – Supporting servers optionally is nice • Support for all reasonably major browsers (e.g., IE6+) • Since different transport protocols are fit for different applications, they should all be supported – ContrastContrast: many tools today support only long polling
  • 35. How I Think Frameworks Should Do It • Hide / abstract away as much of the communication layer as possible – ContrastContrast: many tools are server-only or client-only. Developer must still be very aware of the extreme complexities of client/server interaction • Hide / abstract away as much of the data layer as possible – Developer merely indicates where the data is – Rely on framework to detect when data has changed – Event-driven: Have the framework invoke your callback – ContrastContrast: many tools require reuse of same data logic
  • 36. Comet Frameworks • XAJAX Comet plugin • phet • phpwebsocket • websocket.js • jQuery plugin • socket.io and node.js • jWebSocket • NOLOH
  • 38. How NOLOH Does It • Listener Control – Intended to listen to a source of data, and upon detecting changes, it triggers some defined method – A very unintimidating thing to throw into any application for developers of a very wide range of skill levels
  • 39. How NOLOH Does It • Source property – File, database query, web service, a method that returns data, or you can write your own • Update property (Event) – Gets triggered upon detecting changes • Transport property [optional] – Currently can be: Polling, Long Polling, or Streaming. Others are on the way
  • 41. Original Research • Similar to polling except server will not actually establish connection with browser when there are no updates • Server will protect itself from browser connections in the same way firewalls protect against denial-of-service attacks • When server has updates, then it will listen to browsers
  • 42. Original Research • Great for low-medium frequency applications –Especially in the absence of availability of web sockets • Still experimental, but early tests look promising
  • 44. • Check out NOLOH – http://www.noloh.com – Intro talk “High Performance WebApps Faster & Easier with NOLOH” tomorrow by Asher Snyder • Contact me at pross@noloh.com Thank You Presented by Philip Ross