3. Topics
• Short history of HTTP
• Problems and past solutions
• HTTP/2 Usage
• Reactive Streams
• Spring Reactor
• Intro demo
• Music performance
• HTTP/3
5. HTTP/0.9
• 1990~1991
• One line protocol
• Designed for HTML documents
• Request response
GET /about/
<html><body><h1>It works!</h1></body></html>
Request
Response
18. Using HTTP/2.0
• Implemented in webservers and browsers.
• Web-applications don’t need to change!
• All major browsers
• All major webservers
19. Server push
• Push is browser caches and webservers, not
applications!
• Defined using Link header
Link: </assets/css/screen.css>; rel=preload; as=style
source: GoLang blog
20. A new life for Server Sent Events
• Multiplexing SSE
• Multiple streams, one connection
• No head of line blocking
source: Nginx
25. Simplified
• There are publishers
• There are subscribers
• Asynchronous streams in the middle
• Reactive streams is a collection of interfaces
source: Tech.io
29. Time to make some music!
• Turn on your sound (media)
• Switch to 4G internet
• Navigate to
www.twotruenoobs.com
• Username: ${name}-${section}
for example: berwout-A
• Roomname: jspring
• Hit Join!
30. Difficulties
• Naming is hard
• Error handling on disconnects
• Composability quickly becomes complexity
31. Do we still need websockets?
• Large amount of support
• Client sending a lot of individual requests
• Large amounts of bi-directional data
• Real-time
32. What does HTTP/3 bring?
• TCP Limitations
• QUIC
• Multiple protocols
• TCP over UDP
source: Nginx