WebSocket
リアルタイム Web を切り開く
新しいプロトコル
Jxck
● id: Jxck
● github: Jxck
● twitter: jxck_
● blog: http://d.hatena.ne.jp/jxck
● Love: music
Gtug girls meetup   web socket handson
なにそれおいしいの?
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
Gtug girls meetup   web socket 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

More Related Content

PDF
I visited JSConf + NodeConf + Joyent
PDF
Test it in Node.js
PDF
Nodefest2011-Live
PDF
Real Time App with Node.js
KEY
Node.js ― Hello, world! の1歩先へ。
PDF
Heroku java
PDF
Http2 on go1.6rc2
PDF
Next generation web talk @cross2013
I visited JSConf + NodeConf + Joyent
Test it in Node.js
Nodefest2011-Live
Real Time App with Node.js
Node.js ― Hello, world! の1歩先へ。
Heroku java
Http2 on go1.6rc2
Next generation web talk @cross2013

Similar to Gtug girls meetup web socket handson (20)

PDF
WebSocket + Node.jsでつくるチャットアプリ
PDF
HTML5など社内勉強会 Vol.8 - WebSocket
PPT
websocket-survery
PDF
第4回鹿児島node.jsの会資料_内村
PPTX
SL囲む会東京5 Nodejs×Silverlightではまったこと
PDF
Html5, Web Applications 2
PPTX
再入門、サーバープッシュ技術
PDF
HTML5-pronama-study
PDF
AndroidでWebSocket
PDF
Janogia20120921 yoshinotakeshi
PDF
Nodejs Introduction
PPTX
WebSocketでリアルタイム通信 (第13回学生LT資料)
PDF
これから利用拡大?WebSocket
PDF
WebSocket Protocol と Plack::Middleware::WebSocket
PDF
Web socketドロンくん その後-
PPTX
JavaプログラマのためのWebSocket概要
PDF
いまさら聞けないHTML5概要
PDF
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
PDF
HttpとTelnetをつなぐ何か
PDF
20120525 mt websocket
WebSocket + Node.jsでつくるチャットアプリ
HTML5など社内勉強会 Vol.8 - WebSocket
websocket-survery
第4回鹿児島node.jsの会資料_内村
SL囲む会東京5 Nodejs×Silverlightではまったこと
Html5, Web Applications 2
再入門、サーバープッシュ技術
HTML5-pronama-study
AndroidでWebSocket
Janogia20120921 yoshinotakeshi
Nodejs Introduction
WebSocketでリアルタイム通信 (第13回学生LT資料)
これから利用拡大?WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
Web socketドロンくん その後-
JavaプログラマのためのWebSocket概要
いまさら聞けないHTML5概要
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
HttpとTelnetをつなぐ何か
20120525 mt websocket
Ad

More from Jxck Jxck (15)

PDF
ORTC SVC SimulCast
PDF
HTTP2 時代の Web - web over http2
PDF
Isomorphic Architecture & Interface
PDF
HTTP2 RFC 発行記念祝賀会
PDF
Extensible web #html5j
PDF
Extensible web
PDF
HTTP2Study chronicle #http2conf
PDF
mozaicfm-ep8 #altJS @ll-diver
PDF
Updates of socket.io@1.0
PDF
Why HTML Form dose not support PUT & DELETE ?
PDF
Next generation web talk @cross2014
PDF
HTTP2 & HPACK #pyfes 2013-11-30
PDF
Network server in go #gocon 2013-11-14
PDF
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
PDF
Http2.0 Guide 2013-08-14 #http2study
ORTC SVC SimulCast
HTTP2 時代の Web - web over http2
Isomorphic Architecture & Interface
HTTP2 RFC 発行記念祝賀会
Extensible web #html5j
Extensible web
HTTP2Study chronicle #http2conf
mozaicfm-ep8 #altJS @ll-diver
Updates of socket.io@1.0
Why HTML Form dose not support PUT & DELETE ?
Next generation web talk @cross2014
HTTP2 & HPACK #pyfes 2013-11-30
Network server in go #gocon 2013-11-14
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
Http2.0 Guide 2013-08-14 #http2study
Ad

Gtug girls meetup web socket handson