Ruby Framework For Bidirectional Communication with a Web Server
Author: Damir Svrtan
Mentor: Prof. Sinisa Srbljic
SECTIONS:
1. Real Time Web Communication
2. Real Time Ruby
3. The Rack Interface
4. Building a Ruby Web Framework
WHAT IS Real Time Web COMMUNICATION?
AJAX & POLLING TECHNIQUES
LONG POLLING
SHORT POLLING
HTML 5
SERVER SENT EVENTS &
WEBSOCKETS
SERVER SENT EVENTS(SSE)
WEBSOCKETS
WHY USE SSE OVER WEBSOCKETS?
- if data only needs to be streamed to the client
- using plain HTTP, don't need a special protocol
- automatic reconnection and event IDs
REAL TIME RUBY
FAYE
- publish-subscribe messaging system
- most used real time library in Ruby
- client and server side libraries in Ruby and Node.js
Ruby on RAILS
- Out of box SSE via ActionController::Live
- WebSockets via WebSocket-Rails
SINATRA
- built in streaming option
- sinatra-websocket gem
GOLIATH
- bare-metal asynchronous web server framework
- used for high traffic API's
- not a replacement for Rails or Sinatra
CRAMP
- asynchronous real-time web application framework
- async crossover between Rails and Sinatra
THE RACK INTERFACE
RACK REQUEST HASH
HELLO WORLD WITH RACK
run MyApp.new
require 'rack'
class MyApp
def call(env)
[200, {'Content-Type' => 'text/html'}, ['Hello World']]
end
end
EXPERIMENTAL REAL TIME MVC RUBY WEB FRAMEWORK
EXTERNAL ARCHITECTURE
OUT OF BOX WEBSOCKET AND
HTTP PROTOCOL SUPPORT
INTERNAL ARCHITECTURE
FOLDER STRUCTURE
HTTP ROUTING
HTTP CONTROLLERS
WEBSOCKET HANDLERS
NOODLES WIKI AND SOURCE CODE:
https://github.com/DamirSvrtan/noodles
SAMPLE APPLICATION SOURCE CODE:
https://github.com/DamirSvrtan/noodle-app
Ruby Framework For Bidirectional Communication with a Web Server
By Damir Svrtan
Ruby Framework For Bidirectional Communication with a Web Server
- 1,132