Top Banner
WebSocket リアルタイム Web を切り開く 新しいプロトコル
31

Gtug girls meetup web socket handson

Jun 20, 2015

Download

Documents

Jxck :)
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Gtug girls meetup   web socket handson

WebSocketリアルタイム Web を切り開く

新しいプロトコル

Page 2: Gtug girls meetup   web socket handson

Jxck

● id: Jxck● github: Jxck● twitter: jxck_● blog: http://d.hatena.ne.jp/jxck● Love: music

Page 3: Gtug girls meetup   web socket handson
Page 4: Gtug girls meetup   web socket handson

なにそれおいしいの?

WebSocket?

Page 5: Gtug girls meetup   web socket handson

"みんなで文書を共有しよう"

これまでの Web

Page 6: Gtug girls meetup   web socket handson

サーバに上げた文書(HTML)を

示す場所(URL)を教えれば

ソフト(Browser)を使ってそれを

取得(HTTP)できるし良い感じ。

"みんなで文書を共有しよう"

Page 7: Gtug girls meetup   web socket handson

HTTP でドキュメントを取得

文書

Page 8: Gtug girls meetup   web socket handson

HTTP でチャット

F5 を連打!!?

Page 9: Gtug girls meetup   web socket handson

Pull ベースの Web

Page 10: Gtug girls meetup   web socket handson

Web 2.0 的なアレでは

Page 11: Gtug girls meetup   web socket handson

もう少し賢く(Long Polling)

Page 12: Gtug girls meetup   web socket handson

文書? Pull?

実際に送りたいデータ。

小さい、しかも双方向で送りたい。

{

"message" : "hello world",

"author" : "Jxck"

}

Page 13: Gtug girls meetup   web socket handson

もっと効率よくできないか?

● Push するために Pull しまくってる

○ HTTPがもともとそういうものだからしょうがない

● やり取りするメッセージも小さいのに

○ HTTPはもと(ry

● もっとカジュアルに送受信したい

○ (ry

Page 14: Gtug girls meetup   web socket handson

よろしい、ならば HTML5 だ

よんだ?

Page 15: Gtug girls meetup   web socket handson

Push (というか双方向)

Page 16: Gtug girls meetup   web socket handson

WebSocket

● 小さいデータを

● 沢山の人と

● 頻繁に

● 効率よく

● 双方向でやりとりする

チャットやゲームに最適

Page 17: Gtug girls meetup   web socket handson

WebSocket を使ってプログラミング

をしてもいいんだけど、、

Q: 先生 WebSocket が繋がりません!

● 非対応ブラウザ● ネットワーク環境● ウイルス対策ソフト● 大人の事情

A: Socket.IO というのがあってだな。

Page 18: Gtug girls meetup   web socket handson

Socket.IO のポジション

ブラウザの API を生でゴリゴリ

ライブラリでサクサク

DOM jQuery

WebSocket Socket.IO

ココ

Page 19: Gtug girls meetup   web socket handson

Socket.IO どうよ?

つながりにくい環境でもいい感じに通信してくれる。

あるといいな、があるんですよね。認証とか。

古いブラウザでも動きました!!

色んな言語で使えるのがいい。

みんな使ってたから

作者がイケメン

*意見には個人差があります

Page 20: Gtug girls meetup   web socket handson

Handson

Page 21: Gtug girls meetup   web socket handson
Page 22: Gtug girls meetup   web socket handson

Socket.IO を使ってみよう

2, サーバ側の実装

1, サーバに接続するブラウザ側の実装

http://54.250.126.97:3000/ これを作ります。

Page 23: Gtug girls meetup   web socket handson

環境

Node.js のインストール

● 本家インストーラ● nodebrew

ハンズオンマテリアルhttps://github.com/Jxck/socket.io.chat-sample

$ node -v

v0.10.4

$ npm -v

1.2.18 (多少違ってもok)

Page 24: Gtug girls meetup   web socket handson

Socket.IO.Chat-Sample

$ cd socket.io.chat-sample

$ cd handson

$ npm install

準備完了(おかしかったらチューターまで)

Page 25: Gtug girls meetup   web socket handson

1. ブラウザ側の実装

AWS で実装済みのサーバ

サーバに接続するブラウザ側の実装

1. サーバと接続

2. メッセージ送信

3. メッセージ受信

Page 26: Gtug girls meetup   web socket handson

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 に追加

});});

Page 27: Gtug girls meetup   web socket handson

起動方法

$ cd socket.io.chat-sample

$ cd handson

$ node server.js

実装したらサーバを起動

(おかしかったらチューターまで)

http://localhost:3000/ にアクセス

Page 28: Gtug girls meetup   web socket handson

2. サーバ側の実装

node.js でサーバを実装

1. 接続の確認

2. メッセージ受信

3. メッセージ送信

サーバに接続するブラウザ側の実装

Page 29: Gtug girls meetup   web socket handson

2. サーバ側の実装

// Socket.IOvar 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); });});

Page 30: Gtug girls meetup   web socket handson

起動方法

$ cd socket.io.chat-sample

$ cd handson

$ node server.js

実装したらサーバを起動

(おかしかったらチューターまで)

http://localhost:3000/ にアクセス

Page 31: Gtug girls meetup   web socket handson

まとめ

このページを読んでいるということは、今頃君はもうやり遂げたということだろう。おめでとう。

今回は Socket.IO を使ったチャットを作ってもらたわけだが、ど

うだっただろうか? なんか思ったよりも簡単で楽しいと思っていただけたなら本望だ。

もし余力があれば、今回のチャットを色々改造したり、 Socket.IO を使わない WebSocket のプログラミングにするなど、自分な

りのリアルタイム Web に挑戦してみて欲しい。

これからの Web を担う君たちには云々かんぬん。

健闘を祈る。

Jxck