From Push Technology to Real-Time Messaging and WebSockets

Alessandro Alinone
Alessandro AlinoneCEO at Lightstreamer
Alessandro Alinone
CEO
Last updated: Mar 2017
Agenda
● Quick company background
● Some use cases based on Lightstreamer
● Push technology and Real-Time Messaging:
history and techniques
● Lightstreamer Server: architecture, features,
and live examples
● Other products: Lightstreamer JMS Extender
Some Lightstreamer Clients
Way More Clients...
Hundreds of
customers worldwide.
Named a "Cool Vendor" by
Gartner
Gartner, "Cool Vendors in Application
and Integration Platforms, 2012", by
Massimo Pezzini and Jess Thompson,
11 April 2012.
Cool Vendor Report 2012 cites Weswit (former name of Lightstreamer
company), with its Lightstreamer product, as innovative, impactful and
intriguing in the area of Application and Integration Platforms.
"Web streaming is an emerging form of MOM aimed at enabling back-end applications to send real-time
messages over the public Internet, typically to large numbers (up to millions) of mobile or stationary
endpoints, according to a publish-and-subscribe model". When analyzing 'Who should care' the report goes
on to explain: "ISVs, SIs and cloud service providers that require efficient, low-latency and scalable
publish-and-subscribe data distribution to mobile and Web-based endpoints should look at Web-streaming
technologies as a way to add value to their offerings by enabling reliable and relatively easy-to implement
connectivity."
Disclaimer: Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with
the highest ratings. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims
all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.
What Is Data Push?
Information is delivered on the fly as soon as it
is generated. Web pages and mobile apps are
updated in real time.
Many application domains are taking benefit from push technology:
● Financial services: Online trading platforms for capital markets, live price
dissemination, order submission, spread betting
● Aerospace and Defense: Web telemetry of space vehicles, satellites, and
aircrafts, Web-based management of airport operations
● Media: social TV, second screen, sports event live data
● Gaming: Online casinos, sports betting, online multiplayer video games
● Transportation and Logistics: live tracking, supply chain monitoring
● Alerting: Emergency mass notification systems
● And many others: Social networks, in-app notifications, online
collaboration tools, online auctions, systems monitoring, e-learning, etc.
NASA: International Space
Station Live www.isslive.com
Morgan Stanley Matrix: the
Trading Floor www.morganstanley.com/matrixinfo
IG: Spread Betting and CFDs
www.ig.com
bwin.party: Sports Betting
and Online Gaming www.gvc-plc.com
X Factor: Remote Clapping
and Voting xfactor.sky.it
History of Push Technology
● "Push technology" term coined in 1996
● Information delivery from server to client
● Push vs. pull
● Asynchronous vs. synchronous
● Publish and subscribe
● Email is one of the oldest push systems...
● Push technology is the base of Real-Time
Messaging
The Three Waves of Push
Technology
● 1996-2000: First wave (Webcasting)
Coarse-grained daily updates
● 2000-2012: Second wave (Comet)
Polling, long polling, streaming
● 2012 onwards: Third wave (WebSockets)
Full-duplex bidirectional streaming
Mobile Push Notifications
In 2009, a new wave began: Push Notifications
natively managed by mobile platforms.
● APNs (Apple Push Notification Service, 2009)
● C2DM (Android Cloud to Device Messaging, 2010), GCM (Google
Cloud Messaging, 2012), FCM (Firebase Cloud Messaging, 2016)
● MPNS (Microsoft Push Notification Service), WNS (Windows Push
Notification Service)
Instead, In-App Notifications (or In-App
Messaging) can be implemented via Comet
and WebSockets.
An Example to Help Illustrate
A temperature and
humidity sensor must send
data to a Web browser
(sensor example).
Let's see how this might
have been done in the
history of push technology.
Web
First Wave: Webcasting
● Webcasting, narrowcasting, channeling, …
● 1996-1998: 30 players in the market
(including Pointcast, Microsoft, Netscape)
● 2000: The first wave is dead
● Very coarse-grained, not real-time at all, and
bandwidth-intensive
○ Someone compared the first wave of push technology to
having giant heaps of newspapers dumped on your doorstep
every morning...
● Sensor example: Series of temperature and
humidity values of the day before
Second Wave: from Polling to
Comet
● 2000: Online trading systems require push
● Requirements:
○ Fine-grained updates
○ Real-time updates (low latency)
● Very first players: Lightstreamer, Caplin,
Pushlets, KnowNow
● Technology:
○ Front-end: HTML and/or Java applets
○ Transport techniques: Ajax polling, Comet long
polling, and Comet streaming
Ajax and Comet
2005: Ajax (Asynchronous JavaScript and XML)
Jesse James
Garrett
2006: Comet
Alex
Russell
HTTP/1.1 - Hypertext
Transfer Protocol
Request
GET / HTTP/1.1
Host: www.facebook.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0)
Gecko/20100101 Firefox/16.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: datr=IeCPUJWOBWaU0LrmpOTOC-YX;
reg_fb_gate=http%3A%2F%2Fwww.facebook.com%2F;
reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F;
wd=1080x1281
Cache-Control: max-age=0
Response
HTTP/1.1 200 OK
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
P3P: CP="Facebook does not have a P3P policy. Learn why here:
http://fb.me/p3p"
Pragma: no-cache
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Set-Cookie: reg_ext_ref=deleted; expires=Thu, 01-Jan-1970 00:00:01
GMT; path=/; domain=.facebook.com
Set-Cookie: wd=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT;
path=/; domain=.facebook.com; httponly
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
X-FB-Debug:
4wzuaiMEh5R1tzwT7CBNVncjMl1zLu3fmz4CvMLu+UQ=
Date: Tue, 30 Oct 2012 14:16:12 GMT
Transfer-Encoding: chunked
Connection: keep-alive
2d2e
...........}[o#Y..{..lNO..-..[...u.J...R.&.L&........j....0.'...a.afoX.^`.{...3.`.
{.....?._..L&/.....w.]...d.s.....'"...7.6N..[R...k_..?..
COMPRESSED CONTENT..........................................
Request
Response
Full Page Refresh
Typical issues:
● Low update frequency; no
real time
● High bandwidth usage
● High load on Web server
Sensor example: for each
refresh, the full HTML page
with the current values is
retrieved
wait...
wait...
wait...
Refresh 1
Browser Server
wait...
Refresh 2
User
wait...
Refresh 3
wait...
Ajax Polling
Typical issues:
● Low update frequency; no
real time
● High bandwidth usage (but
lower than page refresh)
● High load on Web server
Advantages:
● User interface is never
blocked
Sensor example: for each
poll, the current values are
retrieved
wait...
wait...Action 1
Browser Server
Action 2
User
wait...
Comet Long Polling
(aka HTTP Long Polling)
Typical issues:
● Medium update frequency;
near real time
● Medium bandwidth usage
(HTTP headers still present
in each round-trip cycle)
● High load on Web server
Advantages:
● User interface is never
blocked
● Low latency on
low-frequency events
Action 1
Server
Action 2
User
wait...
wait...
wait...
Browser
Comet Long Polling
(aka HTTP Long Polling)
Sensor example: for each
poll, the new values are
retrieved only when they
become available. Otherwise,
the request is kept pending
(long poll)
Action 1
Server
Action 2
User
wait...
wait...
wait...
Browser
Comet Streaming
(aka HTTP Streaming)
Typical issues:
● May be blocked by some
anti-virus software
mounted on proxy servers
Advantages:
● High update frequency;
low latency; true real time
● Low bandwidth usage
(very little overhead)
● Low load on the network
infrastructure
Action 1
Server
Action 2
User Browser
Comet Streaming
(aka HTTP Streaming)
Action 1
Server
Action 2
User Browser
Possible techniques:
● Iframe streaming
● XHR streaming
● Flash streaming
● Server-Sent Events
Sensor example: the server
keeps pushing real-time
updates as they become
available, whatever is the
frequency, without
request/response round trips
from the client
Third Wave: WebSockets
● WebSocket protocol:
○ 2007: First draft
○ December 2011: IETF RFC 6455
● WebSocket API:
○ 2009: First draft
○ 2011: First W3C Candidate Recommendation
○ 2012: Second W3C Candidate Recommendation
● Browser support:
○ Early support by Firefox and Chrome
○ Subsequent support by Safari and Opera
○ Final support by Internet Explorer 10
WebSocket Introduction
● Goal:
○ Full-duplex bidirectional communication between a
web client and a web server
● Why not just plain TCP?
○ For security reasons (the client runs untrusted code;
origin-based security model; ports 80/443)
● Why not just HTTP for two-way messages?
○ HTTP is better at sending low-latency, high-frequency
messages from the server to the client
■ Looks like a paradox, being a "client request/server response"
protocol. But: full round trip always required; no control over
connection reuse; no control over message ordering
WebSocket Protocol:
Handshake
Request (from client)
URL: ws://push.lightstreamer.com/lightstreamer
("wss:" if over TLS)
GET lightstreamer HTTP/1.1
Host: push.lightstreamer.com
Upgrade: websocket
Connection: keep-alive, Upgrade
Sec-WebSocket-Key: vd0c3HNgzfWxVFCV2k5AHg==
Sec-WebSocket-Protocol: js.lightstreamer.com
Sec-WebSocket-Version: 13
Origin: http://www.lightstreamer.com
Other HTTP headers (Accept, Cookie, User-Agent, etc.)
Response (from server)
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: RzdoguOqJtIsv+a+Ufu0Eq9guxU=
Sec-WebSocket-Protocol: js.lightstreamer.com
Sec-WebSocket-Version: 13
Date: Fri, 9 Nov 2012 16:23:13 GMT
Server: Lightstreamer/5.0 build 1581 (Lightstreamer Push Server -
www.lightstreamer.com) Vivace edition
● Upgrade from HTTP
● Sec-WebSocket-Key to prevent cross-protocol attacks
● Support for subprotocols
● Support for CORS (Cross-Origin Resource Sharing)
WebSocket Protocol:
Messages
● Full-duplex message-oriented protocol
○ After the handshake, the client and the server can
send messages asynchronously
○ The WebSocket API works at message level
(onmessage, send), while TCP is stream oriented
● Fragmentation
○ Messages are split into frames, to allow:
■ Sending messages of unknown size without buffering
■ Multiplexing more logical channels on the same connection
○ Frames sent from the client must be masked
■ Masking (XOR with random key) prevents cache poisoning on
flawed proxy servers. No masking from server to client
○ Control frames (Ping/Pong)
WebSockets vs. HTTP
Myth:
WebSockets are better than HTTP for sending data from the server to
the client (use less bandwidth, have lower latency, etc.)
Myth debunked:
When sending data from the server to the client, WebSockets and
HTTP Streaming behave exactly the same way.
After handshake, pure payload over TCP is streamed in both cases
(WebSocket framing and HTTP chunking have a negligible difference)
Sensor example: unidirectional scenario (from server to client), so
with WebSockets the behavior is the same as with HTTP Streaming.
WebSockets vs. HTTP
ServerBrowser
The real difference is for bidirectional scenarios:
ServerBrowser ServerBrowser
TCP connection 1 TCP connection 1 TCP connection 2
WebSocket
HTTP
1. HTTP requires at least 2 sockets
2. HTTP requires full round trip for each request
(by default there is no pipelining)
3. HTTP gives no control over connection reuse
(risk of a full SSL handshake for each request)
4. HTTP gives no control over message ordering
Many Terms Used Across the
Years to Refer to All This
Real-Time Messaging
Push Technology
Web Streaming
WebSockets
Comet
Long Polling
Real-Time Web
Web Push
Real-Time Notifications
Internet Messaging
Data Streaming
Data Push
Last Mile Messaging
Reverse Ajax
Ajax Push
and others...
In-App Messaging
What Is Lightstreamer?
Lightstreamer is a real-time messaging server.
● Implements both WebSockets and Comet
● Implements mobile push notifications
● Massively scalable
● Passes through any kind of network intermediary
(firewalls, proxies, etc.)
● Supports any client-side platform
● Integrates with any back-end infrastructure
● Automatically throttles bandwidth
● Supports custom authentication and authorization
● World class track record
Lightstreamer Architecture
Server
Data Adapter
Metadata Adapter
Web Server
Back-end
Systems
InternetClients
(Browsers,
Mobile Apps,
IoT Devices,
etc.)
Lightstreamer Server: stand-alone process that runs in a Java virtual machine
Lightstreamer Data Adapter: custom component based on the provided API
(Java, .NET, Node.js, Python, and TCP sockets) that attaches the data feed to
the Server and injects the real-time data flow
Lightstreamer Metadata Adapter: custom component based on the provided
API (as above) that manages authentication and authorization
Rich Set of Lightstreamer
Client APIs
● Web (compatible with any browser, including older browsers and
mobile browsers; supports frameworks like AngularJS and React,
as well as hybrid frameworks, such as PhoneGap and Electron)
● Android
● Apple (iOS, macOS, tvOS)
● Microsoft (PCL, .NET, Excel, Silverlight, Windows Phone, WinRT)
● Java SE
● Node.js (for both server-side code and React Native apps)
● Python
● Unity
● Adobe (Flash, Flex, AIR)
● Java ME and BlackBerry
● Generic client (open protocol)
Logical Layers of
Lightstreamer Server
Security
SecurityMonitoring
Optimized Delivery
Bandwidth, frequency, and adaptive throttling;
conflation; resampling; delta delivery; batching
Multichannel Transport
Bidirectional transport layer with firewall and proxy
traversal; StreamSense; mobile push notifications
Message Routing
Publish-subscribe; multiplexing; fan-out
SecurityScalability
● Automatic and fast detection of the best transport on a
per-client basis
● Upper layers are fully abstracted from the actual
transport
Multichannel Transport:
StreamSense
WebSockets
HTTP Streaming
HTTP Smart Polling
● Efficient and reliable bidirectional channel provided in
all the cases (whatever is the underlying transport)
● Messages sent from the client to the server have
in-order guaranteed delivery with automatic batching
● Lightstreamer enriches HTTP:
○ Messages are acknowledged explicitly
○ Lost messages are retransmitted automatically
○ Out-of-order messages are reordered automatically
○ Underlying socket is kept open for reuse via reverse heartbeats
○ Multiple requests are automatically batched, to highly reduce the
number of HTTP round trips
Multichannel Transport:
Bidirectional Channel
See live Round-Trip Demo:
http://demos.lightstreamer.com/RoundTripDemo/
● Data can be delivered to mobile clients using native
push notifications too
● Apple Push Notification Service (APNs) and Google
Cloud Messaging (GCM) are supported
● If an app is not active, the device will receive live
updates in any case
● No extra development on the server side: messages
originated from the Data Adapter can use both the
streaming channel and the push notification channel
● Full trigger support to determine what messages
should result in a push notification
Multichannel Transport:
Push Notifications
publishes
● Client subscribes to items with schemas (sets of fields):
Sensor example: Item = "Sensor 845"
Fields = "Temp", "Hum", "Timestamp"
● Data Adapter publishes on demand:
Message Routing:
Publish-Subscribe
Client
subscribes
Field "A"
Item1
Field "B"
Field "C"
Field "X"
Item2
Field "Y"
Field "A"
Item3
Field "X"
Field "C"
Field "Y"
Data Adapter
start publish
Item 1
Item 1
snapshot
Item 1
update 1
Item 1
update 2
publishes
Data Adapter
start publish
Item 2
Item 2
snapshot
Item 2
update 1
Item 2
update 2
Message Routing:
Publish-Subscribe
Clientdelivers Item 1
snapshot
Item 1
update 1
Item 2
snapshot
Item 1
update 2
Item 2
update 1
● Server sends multiplexed data to Client:
● Any routing scenario is supported (broadcast,
multicast, unicast):
publishes
Item 1
publishes
Item 1
(once)
Data Adapter
Client 1,000,000
Client 1
... Massive fan-out,
broadcast
Data Adapter
Client 2
Client 1
publishes
Item 2
item 1
item 1
item 1
item 2
Personal messages,
unicast
Message Routing:
Publish-Subscribe
Data Adapter Client
Publisher Subscriber
● Asymmetric pub-sub:
○ In many scenarios the "data feed" is completely different from the
data consumer (topology, protocol, business model)
○ Optimization for massive publishing from server-side data feeds
● Clients can still publish:
○ The Client (Subscriber API) can send messages to the Adapter to be
processed and possibly incorporated into the data stream
Data Adapter Client
Publisher Subscriber
sendMessage
Optimized Delivery:
Filterability
● Data filterability
○ Based on the nature of the data, series of updates to
an item can be filtered, to reduce frequency, via:
■ Queueing
■ Resampling
■ Conflation
● Lightstreamer's filtering
○ For each subscription of each client, Lightstreamer
allows to define how data can be filtered, with several
parameters
○ Filtering is then applied on the fly to the data stream
based on a number of static and dynamic conditions
Optimized Delivery:
Throttling
● Bandwidth throttling:
○ For each client, a maximum bandwidth can be
allocated to the multiplexed stream connection
● Frequency throttling:
○ For each subscription of each client, a maximum
update frequency can be allocated
● Adaptive throttling:
○ Internet congestion is detected
Lightstreamer heuristically combines these
three variables to dynamically throttle the data
flow with filtering See live Bandwidth and Frequency Demo:
http://demos.lightstreamer.com/BandwidthDemo/
Optimized Delivery:
Other Mechanisms
● Batching and TCP packet optimization:
○ Data is aggregated efficiently within TCP packets
○ Configurable trade-off between latency and overhead
reduction, overriding Nagle's algorithm
● Lightweight protocol:
○ Position-based protocol with negligible overhead (no JSON, no
XML, no metadata redundancy)
● Delta delivery:
○ For subsequent updates to an item, only the actually changed
fields (delta) are sent
● Multiple subscription modes:
○ Merge, Command, Distinct, Raw
See live Market Depth Demo:
http://demos.lightstreamer.com/MarketDepthDemo/
Scalability
● Concurrent staged event-driven architecture
○ Non-blocking I/O used for all types of connections
○ Graceful degradation of the quality of service
○ Tested on a single box with:
■ One million connections with low frequency traffic
■ Tens of thousands of connections with very high
frequency traffic
● Vertical scalability
○ An instance of Lightstreamer Server can fully
leverage multiple CPUs and cores available in a box
● Horizontal scalability
○ Clustering via any standard Web Load Balancer
Security
● Secure connections
○ WSS and HTTPS support based on SSL/TLS strong
encryption and configurable cipher suites
○ Server-side and client-side certificate support
● Authentication
○ Credentials are received from the client, together
with HTTP headers and connection properties
○ Custom Metadata Adapter validates them
● Fine-grained authorization
○ Every subscription and QoS request done by the
clients is authorized through the Metadata Adapter
● Monitoring Dashboard
● Logging
○ Fine-grained configurable logging, with several
categories, levels, and appenders
● JMX
○ Extensive metrics exposed via a JMX interface, to
hook into application management facilities
Monitoring
Lightstreamer JMS Extender
JMS
Producers
and
Consumers
JMS Server
Internet
Clients
(Browsers,
Hybrid Apps,
Node.js Apps)
Lightstreamer JMS Extender leverages the Lightstreamer technology to extend
any third-party JMS server by:
● extending the JMS connections from the LAN to the Web
● extending the JMS API to JavaScript
● extending the JMS server scalability
● extending the JMS security model
Web pages can exchange messages with legacy JMS applications through the
Internet
JMS Extender
JMS Extender Benefits
● Connect to any JMS server from the Internet
Even from behind the strictest corporate firewalls
● Use the JMS API in your JavaScript code
Full JMS API in any Web browser, as well as any Node.js application
● Massively scale out your existing JMS Server
Offload connection fan-out to the the JMS Extender
● Add fine-grained authentication and authorization
The Hook API enables to implement custom security rules
● Connect to multiple JMS servers
A single JMS Extender can connect to different JMS servers
● Support for advanced JMS features
Multiple acknowledge modes, once-and-only-once message delivery, etc.
How to Follow Lightstreamer
Website: lightstreamer.com
Blog: blog.lightstreamer.com
Forums: forums.lightstreamer.com
@Lightstreamer
github.com/Lightstreamer
facebook.com/Lightstreamer
linkedin.com/groups/2218807
google.com/+Lightstreamer
1 of 51

Recommended

GPS Vehicle Tracking Technology by
GPS Vehicle Tracking Technology GPS Vehicle Tracking Technology
GPS Vehicle Tracking Technology Imran Hossain Nayém
280 views16 slides
Android lollipop by
Android lollipopAndroid lollipop
Android lollipopNandakishor Sonkamble
912 views21 slides
Software As A Service (SaaS) by
Software As A Service (SaaS)Software As A Service (SaaS)
Software As A Service (SaaS)Sharvan Salooja
1.7K views23 slides
Cloud Mashup by
Cloud MashupCloud Mashup
Cloud MashupVasco Elvas
13.5K views24 slides
Enabling Innovation & Integration to the Cloud by
Enabling Innovation & Integration to the CloudEnabling Innovation & Integration to the Cloud
Enabling Innovation & Integration to the CloudInnoTech
1.1K views25 slides
Telematics by
TelematicsTelematics
Telematicsqmatheson
4K views15 slides

More Related Content

What's hot

Windows Azure Platform by
Windows Azure PlatformWindows Azure Platform
Windows Azure PlatformDavid Chou
7.6K views52 slides
Vehicle to Vehicle Communication using Bluetooth and GPS. by
Vehicle to Vehicle Communication using Bluetooth and GPS.Vehicle to Vehicle Communication using Bluetooth and GPS.
Vehicle to Vehicle Communication using Bluetooth and GPS.Mayur Wadekar
9.4K views57 slides
Payments 101 - US Payments - A Primer by
Payments 101 - US Payments - A PrimerPayments 101 - US Payments - A Primer
Payments 101 - US Payments - A PrimerKapish Kaushal
1.6K views28 slides
SaaS Presentation by
SaaS PresentationSaaS Presentation
SaaS Presentationsankarshanjoshi
16.1K views40 slides
VEHICLE TRACKING SYSTEM by
VEHICLE TRACKING SYSTEMVEHICLE TRACKING SYSTEM
VEHICLE TRACKING SYSTEMNishil Patel
15.3K views41 slides
Mobile payment by
Mobile paymentMobile payment
Mobile paymentSoftware Park Thailand
15.2K views112 slides

What's hot(20)

Windows Azure Platform by David Chou
Windows Azure PlatformWindows Azure Platform
Windows Azure Platform
David Chou7.6K views
Vehicle to Vehicle Communication using Bluetooth and GPS. by Mayur Wadekar
Vehicle to Vehicle Communication using Bluetooth and GPS.Vehicle to Vehicle Communication using Bluetooth and GPS.
Vehicle to Vehicle Communication using Bluetooth and GPS.
Mayur Wadekar9.4K views
Payments 101 - US Payments - A Primer by Kapish Kaushal
Payments 101 - US Payments - A PrimerPayments 101 - US Payments - A Primer
Payments 101 - US Payments - A Primer
Kapish Kaushal1.6K views
VEHICLE TRACKING SYSTEM by Nishil Patel
VEHICLE TRACKING SYSTEMVEHICLE TRACKING SYSTEM
VEHICLE TRACKING SYSTEM
Nishil Patel15.3K views
The Future of Omni-Channel Banking by Backbase
The Future of Omni-Channel BankingThe Future of Omni-Channel Banking
The Future of Omni-Channel Banking
Backbase61.8K views
Health Care Domain & Testing Challenges by Mindfire Solutions
Health Care Domain & Testing ChallengesHealth Care Domain & Testing Challenges
Health Care Domain & Testing Challenges
Mindfire Solutions27.6K views
Advantages And Disadvantages Of Joomla by tradocaj
Advantages And Disadvantages Of JoomlaAdvantages And Disadvantages Of Joomla
Advantages And Disadvantages Of Joomla
tradocaj11.2K views
Automotive Security (Connected Vehicle Security Issues) by Priyanka Aash
Automotive Security (Connected Vehicle Security Issues)Automotive Security (Connected Vehicle Security Issues)
Automotive Security (Connected Vehicle Security Issues)
Priyanka Aash6.2K views
Mobile Cloud Computing by Vikas Kottari
Mobile Cloud ComputingMobile Cloud Computing
Mobile Cloud Computing
Vikas Kottari27.2K views
The Full Stack Web Development by Sam Dias
The Full Stack Web DevelopmentThe Full Stack Web Development
The Full Stack Web Development
Sam Dias29.1K views
Rich Internet Applications by Youssef Shaath
Rich Internet ApplicationsRich Internet Applications
Rich Internet Applications
Youssef Shaath6.3K views
“ADAS in Action (POC Autonomous Driving Vehicle Presentation)” by GlobalLogic Ukraine
“ADAS in Action (POC Autonomous Driving Vehicle Presentation)”  “ADAS in Action (POC Autonomous Driving Vehicle Presentation)”
“ADAS in Action (POC Autonomous Driving Vehicle Presentation)”
SeeTestAutomation - Mobile Test Automation Tool by Experitest by Experitest
SeeTestAutomation - Mobile Test Automation Tool by ExperitestSeeTestAutomation - Mobile Test Automation Tool by Experitest
SeeTestAutomation - Mobile Test Automation Tool by Experitest
Experitest11.1K views
Simont Braun - Webinar PSD3 PSR Evolution or Revolution? by FinTech Belgium
Simont Braun - Webinar PSD3 PSR Evolution or Revolution?Simont Braun - Webinar PSD3 PSR Evolution or Revolution?
Simont Braun - Webinar PSD3 PSR Evolution or Revolution?
FinTech Belgium135 views
Client Server Architecture by suks_87
Client Server ArchitectureClient Server Architecture
Client Server Architecture
suks_8781.3K views
Value for a Connected Vehicle (IoT) by Brian Loomis
Value for a Connected Vehicle (IoT)Value for a Connected Vehicle (IoT)
Value for a Connected Vehicle (IoT)
Brian Loomis5.7K views

Similar to From Push Technology to Real-Time Messaging and WebSockets

From Data Push to WebSockets by
From Data Push to WebSocketsFrom Data Push to WebSockets
From Data Push to WebSocketsAlessandro Alinone
403 views60 slides
CommTech Talks: Lightstreamer (A. Alinone) by
CommTech Talks: Lightstreamer (A. Alinone)CommTech Talks: Lightstreamer (A. Alinone)
CommTech Talks: Lightstreamer (A. Alinone)Antonio Capone
2.3K views45 slides
Building our own CDN by
Building our own CDNBuilding our own CDN
Building our own CDNZoltán Németh
2K views25 slides
Progress next iot_pelegri by
Progress next iot_pelegriProgress next iot_pelegri
Progress next iot_pelegriEduardo Pelegri-Llopart
746 views44 slides
DockerCon 2017 - General Session Day 2 - Ben Golub by
DockerCon 2017 - General Session Day 2 - Ben GolubDockerCon 2017 - General Session Day 2 - Ben Golub
DockerCon 2017 - General Session Day 2 - Ben GolubDocker, Inc.
1.3K views73 slides
Internet of things - what is really happening by
Internet of things - what is really happeningInternet of things - what is really happening
Internet of things - what is really happeningThor Henning Hetland
2.6K views29 slides

Similar to From Push Technology to Real-Time Messaging and WebSockets(20)

CommTech Talks: Lightstreamer (A. Alinone) by Antonio Capone
CommTech Talks: Lightstreamer (A. Alinone)CommTech Talks: Lightstreamer (A. Alinone)
CommTech Talks: Lightstreamer (A. Alinone)
Antonio Capone2.3K views
DockerCon 2017 - General Session Day 2 - Ben Golub by Docker, Inc.
DockerCon 2017 - General Session Day 2 - Ben GolubDockerCon 2017 - General Session Day 2 - Ben Golub
DockerCon 2017 - General Session Day 2 - Ben Golub
Docker, Inc.1.3K views
IoT Mashup - Webinos iot-2013-07-23 Raggett by webinos project
IoT Mashup - Webinos iot-2013-07-23 RaggettIoT Mashup - Webinos iot-2013-07-23 Raggett
IoT Mashup - Webinos iot-2013-07-23 Raggett
webinos project7.5K views
Open Source Bristol 30 March 2022 by Timothy Spann
Open Source Bristol 30 March 2022Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022
Timothy Spann95 views
Fin fest 2014 - Internet of Things and APIs by Robert Greiner
Fin fest 2014 - Internet of Things and APIsFin fest 2014 - Internet of Things and APIs
Fin fest 2014 - Internet of Things and APIs
Robert Greiner11.5K views
Is your MQTT broker IoT ready? by Eurotech
Is your MQTT broker IoT ready?Is your MQTT broker IoT ready?
Is your MQTT broker IoT ready?
Eurotech4.5K views
Deploying Kong with Mesosphere DC/OS by Mesosphere Inc.
Deploying Kong with Mesosphere DC/OSDeploying Kong with Mesosphere DC/OS
Deploying Kong with Mesosphere DC/OS
Mesosphere Inc.771 views
Test Execution Infrastructure for IoT Quality analysis by Axel Rennoch
Test Execution Infrastructure for IoT Quality analysisTest Execution Infrastructure for IoT Quality analysis
Test Execution Infrastructure for IoT Quality analysis
Axel Rennoch240 views
Streaming Analytics and Internet of Things - Geesara Prathap by WithTheBest
Streaming Analytics and Internet of Things - Geesara PrathapStreaming Analytics and Internet of Things - Geesara Prathap
Streaming Analytics and Internet of Things - Geesara Prathap
WithTheBest525 views
The Future of Financial Information Services by Amish Gandhi
The Future of Financial Information ServicesThe Future of Financial Information Services
The Future of Financial Information Services
Amish Gandhi2.7K views
Extending WebDriver: A cloud approach by Boni García
Extending WebDriver: A cloud approachExtending WebDriver: A cloud approach
Extending WebDriver: A cloud approach
Boni García204 views
Internet of Things Microservices by Capgemini
Internet of Things MicroservicesInternet of Things Microservices
Internet of Things Microservices
Capgemini1K views

Recently uploaded

iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...Bernd Ruecker
54 views69 slides
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesShapeBlue
252 views15 slides
The Power of Heat Decarbonisation Plans in the Built Environment by
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built EnvironmentIES VE
79 views20 slides
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueShapeBlue
138 views15 slides
Kyo - Functional Scala 2023.pdf by
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfFlavio W. Brasil
457 views92 slides
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOsPriyanka Aash
158 views59 slides

Recently uploaded(20)

iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker54 views
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue252 views
The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE79 views
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue138 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash158 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty64 views
State of the Union - Rohit Yadav - Apache CloudStack by ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue297 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue135 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10139 views
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue218 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue166 views
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ... by ShapeBlue
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
Import Export Virtual Machine for KVM Hypervisor - Ayush Pandey - University ...
ShapeBlue119 views
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc170 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue221 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays56 views
Initiating and Advancing Your Strategic GIS Governance Strategy by Safe Software
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance Strategy
Safe Software176 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue152 views

From Push Technology to Real-Time Messaging and WebSockets

  • 2. Agenda ● Quick company background ● Some use cases based on Lightstreamer ● Push technology and Real-Time Messaging: history and techniques ● Lightstreamer Server: architecture, features, and live examples ● Other products: Lightstreamer JMS Extender
  • 4. Way More Clients... Hundreds of customers worldwide.
  • 5. Named a "Cool Vendor" by Gartner Gartner, "Cool Vendors in Application and Integration Platforms, 2012", by Massimo Pezzini and Jess Thompson, 11 April 2012. Cool Vendor Report 2012 cites Weswit (former name of Lightstreamer company), with its Lightstreamer product, as innovative, impactful and intriguing in the area of Application and Integration Platforms. "Web streaming is an emerging form of MOM aimed at enabling back-end applications to send real-time messages over the public Internet, typically to large numbers (up to millions) of mobile or stationary endpoints, according to a publish-and-subscribe model". When analyzing 'Who should care' the report goes on to explain: "ISVs, SIs and cloud service providers that require efficient, low-latency and scalable publish-and-subscribe data distribution to mobile and Web-based endpoints should look at Web-streaming technologies as a way to add value to their offerings by enabling reliable and relatively easy-to implement connectivity." Disclaimer: Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.
  • 6. What Is Data Push? Information is delivered on the fly as soon as it is generated. Web pages and mobile apps are updated in real time. Many application domains are taking benefit from push technology: ● Financial services: Online trading platforms for capital markets, live price dissemination, order submission, spread betting ● Aerospace and Defense: Web telemetry of space vehicles, satellites, and aircrafts, Web-based management of airport operations ● Media: social TV, second screen, sports event live data ● Gaming: Online casinos, sports betting, online multiplayer video games ● Transportation and Logistics: live tracking, supply chain monitoring ● Alerting: Emergency mass notification systems ● And many others: Social networks, in-app notifications, online collaboration tools, online auctions, systems monitoring, e-learning, etc.
  • 7. NASA: International Space Station Live www.isslive.com
  • 8. Morgan Stanley Matrix: the Trading Floor www.morganstanley.com/matrixinfo
  • 9. IG: Spread Betting and CFDs www.ig.com
  • 10. bwin.party: Sports Betting and Online Gaming www.gvc-plc.com
  • 11. X Factor: Remote Clapping and Voting xfactor.sky.it
  • 12. History of Push Technology ● "Push technology" term coined in 1996 ● Information delivery from server to client ● Push vs. pull ● Asynchronous vs. synchronous ● Publish and subscribe ● Email is one of the oldest push systems... ● Push technology is the base of Real-Time Messaging
  • 13. The Three Waves of Push Technology ● 1996-2000: First wave (Webcasting) Coarse-grained daily updates ● 2000-2012: Second wave (Comet) Polling, long polling, streaming ● 2012 onwards: Third wave (WebSockets) Full-duplex bidirectional streaming
  • 14. Mobile Push Notifications In 2009, a new wave began: Push Notifications natively managed by mobile platforms. ● APNs (Apple Push Notification Service, 2009) ● C2DM (Android Cloud to Device Messaging, 2010), GCM (Google Cloud Messaging, 2012), FCM (Firebase Cloud Messaging, 2016) ● MPNS (Microsoft Push Notification Service), WNS (Windows Push Notification Service) Instead, In-App Notifications (or In-App Messaging) can be implemented via Comet and WebSockets.
  • 15. An Example to Help Illustrate A temperature and humidity sensor must send data to a Web browser (sensor example). Let's see how this might have been done in the history of push technology. Web
  • 16. First Wave: Webcasting ● Webcasting, narrowcasting, channeling, … ● 1996-1998: 30 players in the market (including Pointcast, Microsoft, Netscape) ● 2000: The first wave is dead ● Very coarse-grained, not real-time at all, and bandwidth-intensive ○ Someone compared the first wave of push technology to having giant heaps of newspapers dumped on your doorstep every morning... ● Sensor example: Series of temperature and humidity values of the day before
  • 17. Second Wave: from Polling to Comet ● 2000: Online trading systems require push ● Requirements: ○ Fine-grained updates ○ Real-time updates (low latency) ● Very first players: Lightstreamer, Caplin, Pushlets, KnowNow ● Technology: ○ Front-end: HTML and/or Java applets ○ Transport techniques: Ajax polling, Comet long polling, and Comet streaming
  • 18. Ajax and Comet 2005: Ajax (Asynchronous JavaScript and XML) Jesse James Garrett 2006: Comet Alex Russell
  • 19. HTTP/1.1 - Hypertext Transfer Protocol Request GET / HTTP/1.1 Host: www.facebook.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Cookie: datr=IeCPUJWOBWaU0LrmpOTOC-YX; reg_fb_gate=http%3A%2F%2Fwww.facebook.com%2F; reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F; wd=1080x1281 Cache-Control: max-age=0 Response HTTP/1.1 200 OK Cache-Control: private, no-cache, no-store, must-revalidate Expires: Sat, 01 Jan 2000 00:00:00 GMT P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p" Pragma: no-cache X-Content-Type-Options: nosniff X-Frame-Options: DENY X-XSS-Protection: 1; mode=block Set-Cookie: reg_ext_ref=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com Set-Cookie: wd=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly Content-Encoding: gzip Content-Type: text/html; charset=utf-8 X-FB-Debug: 4wzuaiMEh5R1tzwT7CBNVncjMl1zLu3fmz4CvMLu+UQ= Date: Tue, 30 Oct 2012 14:16:12 GMT Transfer-Encoding: chunked Connection: keep-alive 2d2e ...........}[o#Y..{..lNO..-..[...u.J...R.&.L&........j....0.'...a.afoX.^`.{...3.`. {.....?._..L&/.....w.]...d.s.....'"...7.6N..[R...k_..?.. COMPRESSED CONTENT.......................................... Request Response
  • 20. Full Page Refresh Typical issues: ● Low update frequency; no real time ● High bandwidth usage ● High load on Web server Sensor example: for each refresh, the full HTML page with the current values is retrieved wait... wait... wait... Refresh 1 Browser Server wait... Refresh 2 User wait... Refresh 3 wait...
  • 21. Ajax Polling Typical issues: ● Low update frequency; no real time ● High bandwidth usage (but lower than page refresh) ● High load on Web server Advantages: ● User interface is never blocked Sensor example: for each poll, the current values are retrieved wait... wait...Action 1 Browser Server Action 2 User wait...
  • 22. Comet Long Polling (aka HTTP Long Polling) Typical issues: ● Medium update frequency; near real time ● Medium bandwidth usage (HTTP headers still present in each round-trip cycle) ● High load on Web server Advantages: ● User interface is never blocked ● Low latency on low-frequency events Action 1 Server Action 2 User wait... wait... wait... Browser
  • 23. Comet Long Polling (aka HTTP Long Polling) Sensor example: for each poll, the new values are retrieved only when they become available. Otherwise, the request is kept pending (long poll) Action 1 Server Action 2 User wait... wait... wait... Browser
  • 24. Comet Streaming (aka HTTP Streaming) Typical issues: ● May be blocked by some anti-virus software mounted on proxy servers Advantages: ● High update frequency; low latency; true real time ● Low bandwidth usage (very little overhead) ● Low load on the network infrastructure Action 1 Server Action 2 User Browser
  • 25. Comet Streaming (aka HTTP Streaming) Action 1 Server Action 2 User Browser Possible techniques: ● Iframe streaming ● XHR streaming ● Flash streaming ● Server-Sent Events Sensor example: the server keeps pushing real-time updates as they become available, whatever is the frequency, without request/response round trips from the client
  • 26. Third Wave: WebSockets ● WebSocket protocol: ○ 2007: First draft ○ December 2011: IETF RFC 6455 ● WebSocket API: ○ 2009: First draft ○ 2011: First W3C Candidate Recommendation ○ 2012: Second W3C Candidate Recommendation ● Browser support: ○ Early support by Firefox and Chrome ○ Subsequent support by Safari and Opera ○ Final support by Internet Explorer 10
  • 27. WebSocket Introduction ● Goal: ○ Full-duplex bidirectional communication between a web client and a web server ● Why not just plain TCP? ○ For security reasons (the client runs untrusted code; origin-based security model; ports 80/443) ● Why not just HTTP for two-way messages? ○ HTTP is better at sending low-latency, high-frequency messages from the server to the client ■ Looks like a paradox, being a "client request/server response" protocol. But: full round trip always required; no control over connection reuse; no control over message ordering
  • 28. WebSocket Protocol: Handshake Request (from client) URL: ws://push.lightstreamer.com/lightstreamer ("wss:" if over TLS) GET lightstreamer HTTP/1.1 Host: push.lightstreamer.com Upgrade: websocket Connection: keep-alive, Upgrade Sec-WebSocket-Key: vd0c3HNgzfWxVFCV2k5AHg== Sec-WebSocket-Protocol: js.lightstreamer.com Sec-WebSocket-Version: 13 Origin: http://www.lightstreamer.com Other HTTP headers (Accept, Cookie, User-Agent, etc.) Response (from server) HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: RzdoguOqJtIsv+a+Ufu0Eq9guxU= Sec-WebSocket-Protocol: js.lightstreamer.com Sec-WebSocket-Version: 13 Date: Fri, 9 Nov 2012 16:23:13 GMT Server: Lightstreamer/5.0 build 1581 (Lightstreamer Push Server - www.lightstreamer.com) Vivace edition ● Upgrade from HTTP ● Sec-WebSocket-Key to prevent cross-protocol attacks ● Support for subprotocols ● Support for CORS (Cross-Origin Resource Sharing)
  • 29. WebSocket Protocol: Messages ● Full-duplex message-oriented protocol ○ After the handshake, the client and the server can send messages asynchronously ○ The WebSocket API works at message level (onmessage, send), while TCP is stream oriented ● Fragmentation ○ Messages are split into frames, to allow: ■ Sending messages of unknown size without buffering ■ Multiplexing more logical channels on the same connection ○ Frames sent from the client must be masked ■ Masking (XOR with random key) prevents cache poisoning on flawed proxy servers. No masking from server to client ○ Control frames (Ping/Pong)
  • 30. WebSockets vs. HTTP Myth: WebSockets are better than HTTP for sending data from the server to the client (use less bandwidth, have lower latency, etc.) Myth debunked: When sending data from the server to the client, WebSockets and HTTP Streaming behave exactly the same way. After handshake, pure payload over TCP is streamed in both cases (WebSocket framing and HTTP chunking have a negligible difference) Sensor example: unidirectional scenario (from server to client), so with WebSockets the behavior is the same as with HTTP Streaming.
  • 31. WebSockets vs. HTTP ServerBrowser The real difference is for bidirectional scenarios: ServerBrowser ServerBrowser TCP connection 1 TCP connection 1 TCP connection 2 WebSocket HTTP 1. HTTP requires at least 2 sockets 2. HTTP requires full round trip for each request (by default there is no pipelining) 3. HTTP gives no control over connection reuse (risk of a full SSL handshake for each request) 4. HTTP gives no control over message ordering
  • 32. Many Terms Used Across the Years to Refer to All This Real-Time Messaging Push Technology Web Streaming WebSockets Comet Long Polling Real-Time Web Web Push Real-Time Notifications Internet Messaging Data Streaming Data Push Last Mile Messaging Reverse Ajax Ajax Push and others... In-App Messaging
  • 33. What Is Lightstreamer? Lightstreamer is a real-time messaging server. ● Implements both WebSockets and Comet ● Implements mobile push notifications ● Massively scalable ● Passes through any kind of network intermediary (firewalls, proxies, etc.) ● Supports any client-side platform ● Integrates with any back-end infrastructure ● Automatically throttles bandwidth ● Supports custom authentication and authorization ● World class track record
  • 34. Lightstreamer Architecture Server Data Adapter Metadata Adapter Web Server Back-end Systems InternetClients (Browsers, Mobile Apps, IoT Devices, etc.) Lightstreamer Server: stand-alone process that runs in a Java virtual machine Lightstreamer Data Adapter: custom component based on the provided API (Java, .NET, Node.js, Python, and TCP sockets) that attaches the data feed to the Server and injects the real-time data flow Lightstreamer Metadata Adapter: custom component based on the provided API (as above) that manages authentication and authorization
  • 35. Rich Set of Lightstreamer Client APIs ● Web (compatible with any browser, including older browsers and mobile browsers; supports frameworks like AngularJS and React, as well as hybrid frameworks, such as PhoneGap and Electron) ● Android ● Apple (iOS, macOS, tvOS) ● Microsoft (PCL, .NET, Excel, Silverlight, Windows Phone, WinRT) ● Java SE ● Node.js (for both server-side code and React Native apps) ● Python ● Unity ● Adobe (Flash, Flex, AIR) ● Java ME and BlackBerry ● Generic client (open protocol)
  • 36. Logical Layers of Lightstreamer Server Security SecurityMonitoring Optimized Delivery Bandwidth, frequency, and adaptive throttling; conflation; resampling; delta delivery; batching Multichannel Transport Bidirectional transport layer with firewall and proxy traversal; StreamSense; mobile push notifications Message Routing Publish-subscribe; multiplexing; fan-out SecurityScalability
  • 37. ● Automatic and fast detection of the best transport on a per-client basis ● Upper layers are fully abstracted from the actual transport Multichannel Transport: StreamSense WebSockets HTTP Streaming HTTP Smart Polling
  • 38. ● Efficient and reliable bidirectional channel provided in all the cases (whatever is the underlying transport) ● Messages sent from the client to the server have in-order guaranteed delivery with automatic batching ● Lightstreamer enriches HTTP: ○ Messages are acknowledged explicitly ○ Lost messages are retransmitted automatically ○ Out-of-order messages are reordered automatically ○ Underlying socket is kept open for reuse via reverse heartbeats ○ Multiple requests are automatically batched, to highly reduce the number of HTTP round trips Multichannel Transport: Bidirectional Channel See live Round-Trip Demo: http://demos.lightstreamer.com/RoundTripDemo/
  • 39. ● Data can be delivered to mobile clients using native push notifications too ● Apple Push Notification Service (APNs) and Google Cloud Messaging (GCM) are supported ● If an app is not active, the device will receive live updates in any case ● No extra development on the server side: messages originated from the Data Adapter can use both the streaming channel and the push notification channel ● Full trigger support to determine what messages should result in a push notification Multichannel Transport: Push Notifications
  • 40. publishes ● Client subscribes to items with schemas (sets of fields): Sensor example: Item = "Sensor 845" Fields = "Temp", "Hum", "Timestamp" ● Data Adapter publishes on demand: Message Routing: Publish-Subscribe Client subscribes Field "A" Item1 Field "B" Field "C" Field "X" Item2 Field "Y" Field "A" Item3 Field "X" Field "C" Field "Y" Data Adapter start publish Item 1 Item 1 snapshot Item 1 update 1 Item 1 update 2 publishes Data Adapter start publish Item 2 Item 2 snapshot Item 2 update 1 Item 2 update 2
  • 41. Message Routing: Publish-Subscribe Clientdelivers Item 1 snapshot Item 1 update 1 Item 2 snapshot Item 1 update 2 Item 2 update 1 ● Server sends multiplexed data to Client: ● Any routing scenario is supported (broadcast, multicast, unicast): publishes Item 1 publishes Item 1 (once) Data Adapter Client 1,000,000 Client 1 ... Massive fan-out, broadcast Data Adapter Client 2 Client 1 publishes Item 2 item 1 item 1 item 1 item 2 Personal messages, unicast
  • 42. Message Routing: Publish-Subscribe Data Adapter Client Publisher Subscriber ● Asymmetric pub-sub: ○ In many scenarios the "data feed" is completely different from the data consumer (topology, protocol, business model) ○ Optimization for massive publishing from server-side data feeds ● Clients can still publish: ○ The Client (Subscriber API) can send messages to the Adapter to be processed and possibly incorporated into the data stream Data Adapter Client Publisher Subscriber sendMessage
  • 43. Optimized Delivery: Filterability ● Data filterability ○ Based on the nature of the data, series of updates to an item can be filtered, to reduce frequency, via: ■ Queueing ■ Resampling ■ Conflation ● Lightstreamer's filtering ○ For each subscription of each client, Lightstreamer allows to define how data can be filtered, with several parameters ○ Filtering is then applied on the fly to the data stream based on a number of static and dynamic conditions
  • 44. Optimized Delivery: Throttling ● Bandwidth throttling: ○ For each client, a maximum bandwidth can be allocated to the multiplexed stream connection ● Frequency throttling: ○ For each subscription of each client, a maximum update frequency can be allocated ● Adaptive throttling: ○ Internet congestion is detected Lightstreamer heuristically combines these three variables to dynamically throttle the data flow with filtering See live Bandwidth and Frequency Demo: http://demos.lightstreamer.com/BandwidthDemo/
  • 45. Optimized Delivery: Other Mechanisms ● Batching and TCP packet optimization: ○ Data is aggregated efficiently within TCP packets ○ Configurable trade-off between latency and overhead reduction, overriding Nagle's algorithm ● Lightweight protocol: ○ Position-based protocol with negligible overhead (no JSON, no XML, no metadata redundancy) ● Delta delivery: ○ For subsequent updates to an item, only the actually changed fields (delta) are sent ● Multiple subscription modes: ○ Merge, Command, Distinct, Raw See live Market Depth Demo: http://demos.lightstreamer.com/MarketDepthDemo/
  • 46. Scalability ● Concurrent staged event-driven architecture ○ Non-blocking I/O used for all types of connections ○ Graceful degradation of the quality of service ○ Tested on a single box with: ■ One million connections with low frequency traffic ■ Tens of thousands of connections with very high frequency traffic ● Vertical scalability ○ An instance of Lightstreamer Server can fully leverage multiple CPUs and cores available in a box ● Horizontal scalability ○ Clustering via any standard Web Load Balancer
  • 47. Security ● Secure connections ○ WSS and HTTPS support based on SSL/TLS strong encryption and configurable cipher suites ○ Server-side and client-side certificate support ● Authentication ○ Credentials are received from the client, together with HTTP headers and connection properties ○ Custom Metadata Adapter validates them ● Fine-grained authorization ○ Every subscription and QoS request done by the clients is authorized through the Metadata Adapter
  • 48. ● Monitoring Dashboard ● Logging ○ Fine-grained configurable logging, with several categories, levels, and appenders ● JMX ○ Extensive metrics exposed via a JMX interface, to hook into application management facilities Monitoring
  • 49. Lightstreamer JMS Extender JMS Producers and Consumers JMS Server Internet Clients (Browsers, Hybrid Apps, Node.js Apps) Lightstreamer JMS Extender leverages the Lightstreamer technology to extend any third-party JMS server by: ● extending the JMS connections from the LAN to the Web ● extending the JMS API to JavaScript ● extending the JMS server scalability ● extending the JMS security model Web pages can exchange messages with legacy JMS applications through the Internet JMS Extender
  • 50. JMS Extender Benefits ● Connect to any JMS server from the Internet Even from behind the strictest corporate firewalls ● Use the JMS API in your JavaScript code Full JMS API in any Web browser, as well as any Node.js application ● Massively scale out your existing JMS Server Offload connection fan-out to the the JMS Extender ● Add fine-grained authentication and authorization The Hook API enables to implement custom security rules ● Connect to multiple JMS servers A single JMS Extender can connect to different JMS servers ● Support for advanced JMS features Multiple acknowledge modes, once-and-only-once message delivery, etc.
  • 51. How to Follow Lightstreamer Website: lightstreamer.com Blog: blog.lightstreamer.com Forums: forums.lightstreamer.com @Lightstreamer github.com/Lightstreamer facebook.com/Lightstreamer linkedin.com/groups/2218807 google.com/+Lightstreamer