nchan.md - slideit€¦ · socket.io (node.js) lightstreamer (java) faye (node.js and ruby)......

30
NCHAN WEB Vincent 2017.3.7

Upload: others

Post on 17-Oct-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

NCHAN WEB

Vincent 2017.3.7

Page 2: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

name = 'Vincent'

real_name = ' '

company = ' - '

title = ' CTO Rubyist'

blog = 'https://xiewenwei.github.io'

github = 'https://github.com/xiewenwei'

ruby_china = 'https://ruby-china.org/vincent'

while true

write_programs

read_books

watch_movies

enjoy

end

Page 3: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

IM

Nginx Nchan Nginx Nchan

& QA

Page 4: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

IM IM

IM Client iOS Android Web

Page 5: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

Web

Http

Socket

Websocket

Page 6: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

1 HTTP

Page 7: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

2 IM

Page 8: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

3 WEBSOCKET - ACTIONCABLE

Rails 5 Rails Rails

Page 9: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

ACTIONCABLE

ActionCable websocket serverruby

Page 10: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

4 WEBSOCKET - NGINX NCHAN Nginx / pub/sub

Page 11: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

NGINX NCHAN

/ pub/sub Web

Nginx Nginx

Page 12: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

NCHAN

nchan application client websocket

application http pub nchan nchan client

Page 13: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

WEBSOCKET

ActionCable (Ruby on Rails)socket.io (Node.js)Lightstreamer (Java)Faye (Node.js and Ruby)...

Page 14: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

NCHAN

Restful API hook Websocket, EventSource Long Poll

Page 15: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

LOAD BALANCING HTTP

Page 16: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

LOAD BALANCING WEBSOCKETS

Page 17: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

NCHAN LOAD BALANCING

Page 18: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

NCHAN BENCHMARK

Nchan

Page 19: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

BENCHMARK

ActionCable

Page 20: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

NCHAN

Page 21: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING
Page 22: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

Channel ID ID Websocket

location ~ /channels/(\w+)/sub$ { nchan_subscriber; nchan_channel_id "$1"; }

Page 23: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

ID uuid hook token

location ~ /channels/(\w+)/sub$ { nchan_authorize_request /ws_authorize; #... } location = /ws_authorize { proxy_pass http://hook_demo/websockets/auth; proxy_set_header X-Channel-Id $nchan_channel_id; #... }

Page 24: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

hook ID Redis Set Redis Set

hook ID Redis Set

Page 25: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

Http

Websocket

Page 26: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

Channel ID

Page 27: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

Redis

...

Page 28: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

Nchan Ngnix Web

Nchan

Page 29: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

THANK YOU & QA Ruby

Page 30: nchan.md - slideit€¦ · socket.io (Node.js) Lightstreamer (Java) Faye (Node.js and Ruby)... NCHAN Restful API hook Websocket, EventSource Long Poll. LOAD BALANCING HTTP. LOAD BALANCING

Nginx Nchan Rails ActionCable Real-time Web Applications with Ruby on RailsWebsocket Shootout: Clojure, C++, Elixir, Go, NodeJS, andRuby