33
Pusherアプリの作り方 Let’s develop real-time Web application using Pusher! 大和田 純 / june29

Pusherアプリの作り方

Embed Size (px)

DESCRIPTION

札幌Ruby会議03http://regional.rubykaigi.org/sapporo03

Citation preview

Page 1: Pusherアプリの作り方

Pusherアプリの作り方Let’s develop real-time Web application using Pusher!

大和田 純 / june29

Page 2: Pusherアプリの作り方

冬の札幌でこんにちわ!

Page 3: Pusherアプリの作り方

大和田 純JUN OHWADA

Page 4: Pusherアプリの作り方

大和田 純JUN OHWADA

会いに行けるプログラマ

Page 5: Pusherアプリの作り方

Pusherアプリの作り方Let’s develop real-time Web application using Pusher!

Page 6: Pusherアプリの作り方

emonstrationD

Page 7: Pusherアプリの作り方

Polling Comet WebSocket

Dynamic Web

Page 8: Pusherアプリの作り方

Polling Comet WebSocket

Dynamic Web

Page 9: Pusherアプリの作り方

No delay No waste request No waste code

WebSocket

Page 10: Pusherアプリの作り方

No delay No waste request No waste code

WebSocket

Page 11: Pusherアプリの作り方

https://github.com/igrigorik/em-websocket

Page 12: Pusherアプリの作り方

Pusherhttp://pusherapp.com/

Page 13: Pusherアプリの作り方

https://github.com/newbamboo/pusher-gem

Page 14: Pusherアプリの作り方

receiver.bind(label2, function(data) { ... } );

receiver.bind(label3, function(data) { ... } );

Pusher[channel].trigger(label1, data)

Pusher[channel].trigger(label2, data)

Pusher[channel].trigger(label3, data)

Ruby

var receiver = new Pusher(key, channel);

receiver.bind(label1, function(data) { ... } );

JavaScript

Browser

WebSocket

Page 17: Pusherアプリの作り方

http://www.!ickr.com/photos/machu/4942003500/

Sub screens

Page 19: Pusherアプリの作り方

TwitterIRC

Operation

#rubykaigi#rubykaigiNoti"cation

Page 21: Pusherアプリの作り方

Twitter

IRC

Page 22: Pusherアプリの作り方

txt

txt

txt

Operation

Page 23: Pusherアプリの作り方

receiver.bind(label2, function(data) { ... });

receiver.bind(label3, function(data) { ... });

Pusher[channel].trigger(label1, data)

Pusher[channel].trigger(label2, data)

Pusher[channel].trigger(label3, data)

Ruby

var receiver = new Pusher(key, channel);

receiver.bind(label1, function(data) { ... });

JavaScript

Browser

WebSocket

Page 24: Pusherアプリの作り方

receiver.bind(label2, function(data) { ... });

receiver.bind(label3, function(data) { ... });

Pusher[channel].trigger(label1, data)

Pusher[channel].trigger(label2, data)

Pusher[channel].trigger(label3, data)

Ruby

var receiver = new Pusher(key, channel);

receiver.bind(label1, function(data) { ... });

JavaScript

Browser

WebSocket

何を送る?

Page 25: Pusherアプリの作り方

receiver.bind(label2, function(data) { ... });

receiver.bind(label3, function(data) { ... });

Pusher[channel].trigger(label1, data)

Pusher[channel].trigger(label2, data)

Pusher[channel].trigger(label3, data)

Ruby

var receiver = new Pusher(key, channel);

receiver.bind(label1, function(data) { ... });

JavaScript

Browser

WebSocket

どう扱う?

Page 26: Pusherアプリの作り方

receiver.bind(label2, function(data) { ... });

receiver.bind(label3, function(data) { ... });

Pusher[channel].trigger(label1, data)

Pusher[channel].trigger(label2, data)

Pusher[channel].trigger(label3, data)

Ruby

var receiver = new Pusher(key, channel);

receiver.bind(label1, function(data) { ... });

JavaScript

Browser

WebSocket

Page 27: Pusherアプリの作り方

https://github.com/ruby-no-kai/rubykaigi/tree/master/public/2010/live/

https://github.com/june29/rk2010stream/tree/master/pushers/

Page 28: Pusherアプリの作り方
Page 29: Pusherアプリの作り方

大規模会議を支える技術

Page 30: Pusherアプリの作り方

Pusherhttp://pusherapp.com/

Page 31: Pusherアプリの作り方

WebSocket.org -- A WebSocket Communityhttp://www.websockets.org/

Pusherhttp://pusherapp.com/

Building Real Time Web (by Makoto Inoue)http://vimeo.com/14549558

WebSocketで目指せ“リアルタイムWeb”! - @IThttp://www.atmarkit.co.jp/fcoding/articles/websocket/01/websocket01a.html

References

@makoto_inoue

Page 32: Pusherアプリの作り方

Pusherアプリの作り方Let’s develop real-time Web application using Pusher!

ご清聴ありがとうございました

Page 33: Pusherアプリの作り方

大和田 純JUN OHWADA

懇親会で個別握手会!