SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
WebSocket
リアルタイム Web を切り開く
新しいプロトコル
Jxck
● id: Jxck
● github: Jxck
● twitter: jxck_
● blog: http://d.hatena.ne.jp/jxck
● Love: music
なにそれおいしいの?
WebSocket?
"みんなで文書を共有しよう"
これまでの Web
サーバに上げた文書(HTML)を
示す場所(URL)を教えれば
ソフト(Browser)を使ってそれを
取得(HTTP)できるし良い感じ。
"みんなで文書を共有しよう"
HTTP でドキュメントを取得
文書
HTTP でチャット
F5 を連打!!?
Pull ベースの Web
Web2.0的なアレでは
もう少し賢く(Long Polling)
文書? Pull?
実際に送りたいデータ。
小さい、しかも双方向で送りたい。
{
"message" : "hello world",
"author" : "Jxck"
}
もっと効率よくできないか?
● Push するために Pull しまくってる
○ HTTPがもともとそういうものだからしょうがない
● やり取りするメッセージも小さいのに
○ HTTPはもと(ry
● もっとカジュアルに送受信したい
○ (ry
よろしい、ならば HTML5 だ
よんだ?
Push (というか双方向)
WebSocket
● 小さいデータを
● 沢山の人と
● 頻繁に
● 効率よく
● 双方向でやりとりする
チャットやゲームに最適
WebSocket を使ってプログラミング
をしてもいいんだけど、、
Q: 先生 WebSocket が繋がりません!
● 非対応ブラウザ
● ネットワーク環境
● ウイルス対策ソフト
● 大人の事情
A: Socket.IO というのがあってだな。
Socket.IO のポジション
ブラウザの API を
生でゴリゴリ
ライブラリでサクサク
DOM jQuery
WebSocket Socket.IO
コ
コ
Socket.IO どうよ?
つながりにくい環境でもいい
感じに通信してくれる。
あるといいな、があるんですよ
ね。認証とか。
古いブラウザでも動きまし
た!!
色んな言語で使えるのが
いい。
みんな使ってたから
作者がイケメン
*意見には個人差があります
Handson
Socket.IO を使ってみよう
2, サーバ側
の実装
1, サーバに接
続するブラウザ
側の実装
http://54.250.126.97:3000/ これを作ります。
環境
Node.js のインストール
● 本家インストーラ
● nodebrew
ハンズオンマテリアル
https://github.com/Jxck/socket.io.chat-sample
$ node -v
v0.10.4
$ npm -v
1.2.18 (多少違ってもok)
Socket.IO.Chat-Sample
$ cd socket.io.chat-sample
$ cd handson
$ npm install
準備完了
(おかしかったらチューターまで)
1. ブラウザ側の実装
AWS で実
装済みの
サーバ
サーバに接続す
るブラウザ側の
実装
1. サーバと接続
2. メッセージ送信
3. メッセージ受信
1. ブラウザ側の実装
// サーバに接続(AWS)
var socket = io.connect('http://54.250.126.97:3000/');
$(function() {
// 送信
$('#ok').on('click', function() { // クリックしたら
var message = $('#message').val(); // 中身を取って
socket.emit('message', message); // サーバに送信
});
// 受信
socket.on('message', function(data) { // 受信したら
var $li = $('<li>', { text: data }); // li を作って
$('#messages').append($li); // ul に追加
});
});
起動方法
$ cd socket.io.chat-sample
$ cd handson
$ node server.js
実装したらサーバを起動
(おかしかったらチューターまで)
http://localhost:3000/ にアクセス
2. サーバ側の実装
node.js でサー
バを実装
1. 接続の確認
2. メッセージ受信
3. メッセージ送信
サーバに
接続するブ
ラウザ側の
実装
2. サーバ側の実装
// Socket.IO
var io = require('socket.io')
, io = io.listen(server);
// クライアントが接続してきたあと
io.sockets.on('connection', function(socket) {
// メッセージを受信したら
socket.on('message', function(data) {
// 全てのクライアントに送り返す
io.sockets.emit('message', data);
console.log(data);
});
});
起動方法
$ cd socket.io.chat-sample
$ cd handson
$ node server.js
実装したらサーバを起動
(おかしかったらチューターまで)
http://localhost:3000/ にアクセス
まとめ
このページを読んでいるということは、今頃君はもうやり遂げたと
いうことだろう。おめでとう。
今回は Socket.IO を使ったチャットを作ってもらたわけだが、ど
うだっただろうか? なんか思ったよりも簡単で楽しいと思っていた
だけたなら本望だ。
もし余力があれば、今回のチャットを色々改造したり、 Socket.
IO を使わない WebSocket のプログラミングにするなど、自分な
りのリアルタイム Web に挑戦してみて欲しい。
これからの Web を担う君たちには云々かんぬん。
健闘を祈る。
Jxck

Más contenido relacionado

Similar a Gtug girls meetup web socket handson

公開型CMSとしてのTrac
公開型CMSとしてのTrac公開型CMSとしてのTrac
公開型CMSとしてのTracKazuya Hirobe
 
websocket-survery
websocket-surverywebsocket-survery
websocket-surveryhogemaru_
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Herokumgwsuzuki
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリKohei Kadowaki
 
WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)stmkza
 
Web socket and gRPC
Web socket and gRPCWeb socket and gRPC
Web socket and gRPCTIS Inc
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2Jxck Jxck
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話shigeki_ohtsu
 
HTTP入門
HTTP入門HTTP入門
HTTP入門Sho A
 
Httpを振り返ってみる
Httpを振り返ってみるHttpを振り返ってみる
Httpを振り返ってみるgalluda
 
最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策Kensaku Komatsu
 
モダンでオサレなwebサイト
モダンでオサレなwebサイトモダンでオサレなwebサイト
モダンでオサレなwebサイトMunenori Sugimura
 
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketYu Nobuoka
 
第43回HTML5とか勉強会 最新webプロトコル傾向と対策
第43回HTML5とか勉強会 最新webプロトコル傾向と対策第43回HTML5とか勉強会 最新webプロトコル傾向と対策
第43回HTML5とか勉強会 最新webプロトコル傾向と対策Kensaku Komatsu
 

Similar a Gtug girls meetup web socket handson (17)

Webページで学ぶJavaScript2013 第7回
Webページで学ぶJavaScript2013 第7回Webページで学ぶJavaScript2013 第7回
Webページで学ぶJavaScript2013 第7回
 
公開型CMSとしてのTrac
公開型CMSとしてのTrac公開型CMSとしてのTrac
公開型CMSとしてのTrac
 
websocket-survery
websocket-surverywebsocket-survery
websocket-survery
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Heroku
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリ
 
WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)
 
Web socket and gRPC
Web socket and gRPCWeb socket and gRPC
Web socket and gRPC
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
 
Java Script4
Java Script4Java Script4
Java Script4
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
Httpを振り返ってみる
Httpを振り返ってみるHttpを振り返ってみる
Httpを振り返ってみる
 
最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策
 
モダンでオサレなwebサイト
モダンでオサレなwebサイトモダンでオサレなwebサイト
モダンでオサレなwebサイト
 
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
 
第43回HTML5とか勉強会 最新webプロトコル傾向と対策
第43回HTML5とか勉強会 最新webプロトコル傾向と対策第43回HTML5とか勉強会 最新webプロトコル傾向と対策
第43回HTML5とか勉強会 最新webプロトコル傾向と対策
 

Más de Jxck Jxck

ORTC SVC SimulCast
ORTC SVC SimulCastORTC SVC SimulCast
ORTC SVC SimulCastJxck Jxck
 
Isomorphic Architecture & Interface
Isomorphic Architecture & InterfaceIsomorphic Architecture & Interface
Isomorphic Architecture & InterfaceJxck Jxck
 
HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会Jxck Jxck
 
Extensible web #html5j
Extensible web #html5jExtensible web #html5j
Extensible web #html5jJxck Jxck
 
Extensible web
Extensible webExtensible web
Extensible webJxck Jxck
 
HTTP2Study chronicle #http2conf
HTTP2Study chronicle #http2confHTTP2Study chronicle #http2conf
HTTP2Study chronicle #http2confJxck Jxck
 
mozaicfm-ep8 #altJS @ll-diver
mozaicfm-ep8 #altJS @ll-divermozaicfm-ep8 #altJS @ll-diver
mozaicfm-ep8 #altJS @ll-diverJxck Jxck
 
Updates of socket.io@1.0
Updates of socket.io@1.0Updates of socket.io@1.0
Updates of socket.io@1.0Jxck Jxck
 
Why HTML Form dose not support PUT & DELETE ?
Why HTML Form dose not support PUT & DELETE ?Why HTML Form dose not support PUT & DELETE ?
Why HTML Form dose not support PUT & DELETE ?Jxck Jxck
 
Next generation web talk @cross2014
Next generation web talk @cross2014Next generation web talk @cross2014
Next generation web talk @cross2014Jxck Jxck
 
HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30Jxck Jxck
 
Network server in go #gocon 2013-11-14
Network server in go  #gocon 2013-11-14Network server in go  #gocon 2013-11-14
Network server in go #gocon 2013-11-14Jxck Jxck
 
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28Jxck Jxck
 
Http2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2studyHttp2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2studyJxck Jxck
 
Nodejs Introduction
Nodejs IntroductionNodejs Introduction
Nodejs IntroductionJxck Jxck
 

Más de Jxck Jxck (15)

ORTC SVC SimulCast
ORTC SVC SimulCastORTC SVC SimulCast
ORTC SVC SimulCast
 
Isomorphic Architecture & Interface
Isomorphic Architecture & InterfaceIsomorphic Architecture & Interface
Isomorphic Architecture & Interface
 
HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会
 
Extensible web #html5j
Extensible web #html5jExtensible web #html5j
Extensible web #html5j
 
Extensible web
Extensible webExtensible web
Extensible web
 
HTTP2Study chronicle #http2conf
HTTP2Study chronicle #http2confHTTP2Study chronicle #http2conf
HTTP2Study chronicle #http2conf
 
mozaicfm-ep8 #altJS @ll-diver
mozaicfm-ep8 #altJS @ll-divermozaicfm-ep8 #altJS @ll-diver
mozaicfm-ep8 #altJS @ll-diver
 
Updates of socket.io@1.0
Updates of socket.io@1.0Updates of socket.io@1.0
Updates of socket.io@1.0
 
Why HTML Form dose not support PUT & DELETE ?
Why HTML Form dose not support PUT & DELETE ?Why HTML Form dose not support PUT & DELETE ?
Why HTML Form dose not support PUT & DELETE ?
 
Next generation web talk @cross2014
Next generation web talk @cross2014Next generation web talk @cross2014
Next generation web talk @cross2014
 
HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30HTTP2 & HPACK #pyfes 2013-11-30
HTTP2 & HPACK #pyfes 2013-11-30
 
Network server in go #gocon 2013-11-14
Network server in go  #gocon 2013-11-14Network server in go  #gocon 2013-11-14
Network server in go #gocon 2013-11-14
 
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
 
Http2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2studyHttp2.0 Guide 2013-08-14 #http2study
Http2.0 Guide 2013-08-14 #http2study
 
Nodejs Introduction
Nodejs IntroductionNodejs Introduction
Nodejs Introduction
 

Gtug girls meetup web socket handson