13
Ruby on Rails & WebSocket Le Hoai Phuong Nguyen Huy Hung Hoang Van Quan Cao Duy Khanh Vu Van Chuyen Timeless

Timeless - Websocket on Rails

Embed Size (px)

Citation preview

Page 1: Timeless - Websocket on Rails

Ruby on Rails & WebSocket

Le Hoai PhuongNguyen Huy Hung Hoang Van QuanCao Duy Khanh Vu Van Chuyen

Timeless

Page 2: Timeless - Websocket on Rails

● WebSocket Overview● Benefit● How does WS work?● Pros & Cons● WebSocket on Rails● Summary

Content

Page 3: Timeless - Websocket on Rails

WebSocket Overview● Full-duplex channels over a single TCP

connection● Was standardized in 2011● Use an HTTP Upgrade request for

handshaking

Page 4: Timeless - Websocket on Rails

Upgrade RequestGET /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==Sec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 13Origin: http://example.com

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=Sec-WebSocket-Protocol: chat

Client Request

Server Response

Page 5: Timeless - Websocket on Rails

WebSocket Benefit● Overhead of HTTP

○ 1 HTTP request/response Header: 871 bytes○ 1 WS frame: 2 bytes

● Low Latency

Page 6: Timeless - Websocket on Rails
Page 7: Timeless - Websocket on Rails

How does it work?

Page 8: Timeless - Websocket on Rails

Pros & Cons● Pros

○ Realtime○ Lightweight○ Low latency○ Full duplex

● Cons○ Still in working progress○ Not suitable for streaming large data (HD video)○ Hard to control multi-channels

Page 9: Timeless - Websocket on Rails

WebSocket on Rails● Web server

○ Event Based○ or Client WS simulation using JavaScript

● Many gems: websocket-rails, em-websocket, evma_httpserver

Page 10: Timeless - Websocket on Rails

Reactor pattern

RequestEventMachine(demultiplexer - dispatcher)

Thin(Web Server)

Rack Rails adapter

Rack Thin handlerRails

Page 11: Timeless - Websocket on Rails

A demo coding with gem websocket-rails

Page 12: Timeless - Websocket on Rails

Summary● Realtime● New● Lightweight● Full duplex

Page 13: Timeless - Websocket on Rails