Submit Search
Upload
Socket.io slideshare エンジニア勉強会20140122
•
2 likes
•
1,481 views
エンジニア勉強会 エスキュービズム
Follow
1月22日に開催されたエスキュービズムエンジニア勉強会の資料です。
Read less
Read more
Report
Share
Report
Share
1 of 20
Download now
Download to read offline
Recommended
Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530
エンジニア勉強会 エスキュービズム
サーバサイドNodeの使い道
サーバサイドNodeの使い道
pospome
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
Nobuhiro Nakashima
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
エンジニア勉強会 エスキュービズム
小売りにおけるAIの可能性
小売りにおけるAIの可能性
エンジニア勉強会 エスキュービズム
Recommended
Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530
エンジニア勉強会 エスキュービズム
サーバサイドNodeの使い道
サーバサイドNodeの使い道
pospome
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
Nobuhiro Nakashima
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
エンジニア勉強会 エスキュービズム
小売りにおけるAIの可能性
小売りにおけるAIの可能性
エンジニア勉強会 エスキュービズム
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
エンジニア勉強会 エスキュービズム
はじめての品質
はじめての品質
エンジニア勉強会 エスキュービズム
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
エンジニア勉強会 エスキュービズム
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
エンジニア勉強会 エスキュービズム
ほんのりTDD
ほんのりTDD
エンジニア勉強会 エスキュービズム
IoTで何をやったか
IoTで何をやったか
エンジニア勉強会 エスキュービズム
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
エンジニア勉強会 エスキュービズム
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
エンジニア勉強会 エスキュービズム
VRのコンテンツ
VRのコンテンツ
エンジニア勉強会 エスキュービズム
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
エンジニア勉強会 エスキュービズム
レイアウトについて
レイアウトについて
エンジニア勉強会 エスキュービズム
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
エンジニア勉強会 エスキュービズム
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
エンジニア勉強会 エスキュービズム
IoTのIを考えてみる話
IoTのIを考えてみる話
エンジニア勉強会 エスキュービズム
AzureのIaaSとかの話
AzureのIaaSとかの話
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
エンジニア勉強会 エスキュービズム
Dockerを社内で使うために
Dockerを社内で使うために
エンジニア勉強会 エスキュービズム
More Related Content
More from エンジニア勉強会 エスキュービズム
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
エンジニア勉強会 エスキュービズム
はじめての品質
はじめての品質
エンジニア勉強会 エスキュービズム
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
エンジニア勉強会 エスキュービズム
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
エンジニア勉強会 エスキュービズム
ほんのりTDD
ほんのりTDD
エンジニア勉強会 エスキュービズム
IoTで何をやったか
IoTで何をやったか
エンジニア勉強会 エスキュービズム
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
エンジニア勉強会 エスキュービズム
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
エンジニア勉強会 エスキュービズム
VRのコンテンツ
VRのコンテンツ
エンジニア勉強会 エスキュービズム
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
エンジニア勉強会 エスキュービズム
レイアウトについて
レイアウトについて
エンジニア勉強会 エスキュービズム
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
エンジニア勉強会 エスキュービズム
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
エンジニア勉強会 エスキュービズム
IoTのIを考えてみる話
IoTのIを考えてみる話
エンジニア勉強会 エスキュービズム
AzureのIaaSとかの話
AzureのIaaSとかの話
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
エンジニア勉強会 エスキュービズム
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
エンジニア勉強会 エスキュービズム
Dockerを社内で使うために
Dockerを社内で使うために
エンジニア勉強会 エスキュービズム
More from エンジニア勉強会 エスキュービズム
(20)
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
はじめての品質
はじめての品質
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
ほんのりTDD
ほんのりTDD
IoTで何をやったか
IoTで何をやったか
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
VRのコンテンツ
VRのコンテンツ
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
レイアウトについて
レイアウトについて
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
IoTのIを考えてみる話
IoTのIを考えてみる話
AzureのIaaSとかの話
AzureのIaaSとかの話
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
Dockerを社内で使うために
Dockerを社内で使うために
Socket.io slideshare エンジニア勉強会20140122
1.
socket.ioと リアルタイムWeb 2014.1.22
2.
今日の内容 リアルタイムweb WebSocket socket.io コード例 デモ 今回の利用想定(プッシュ通知) リソースとかの話 バージョンの話
3.
リアルタイムweb リアルタイムwebは、インターネット上のユーザの書き込みや動 向を、即時かつ大規模に他のユーザと共有する仕組みの総 称。 by wiki facebookや twitterのアレ。
4.
リアルタイムweb クライアント・サーバ間の双方向通信 ・クライアント→サーバはajaxでもいい ・サーバ→クライアントのプッシュ通信 (とりわけリアルタイム性を高めたい場合) WebSocket!! http://www.lgtm.in/g
5.
リアルタイムweb WebSocket RFCで標準化されたアプリケーション層・通信プロトコル XMLHttpRequest (Ajax)との違いは? ⇒ 双方向通信の際のコストが違います。 XMLHttpRequest : コネクション都度生成 WebSocket : コネクション生成は初回のみ
6.
リアルタイムweb Http Polling, JSONP
Polling http://codezine.jp/article/detail/7075
7.
リアルタイムweb Comet (HTTP Streaming,
HTTP Long polling) Apache Server ・ keep-alive ・ MaxClients の制約をモロに受ける .. http://codezine.jp/article/detail/7075
8.
リアルタイムweb Plugin Socket http://codezine.jp/article/detail/7075
9.
リアルタイムweb WebSocket http://codezine.jp/article/detail/7075
10.
WebSocket コネクション生成はこんな感じ Client Server Client time Server 自由にやり取り http://ja.wikipedia.org/wiki/WebSocket
11.
WebSocket http://www.websocket.org/echo.html
12.
Socket.io http://nodejs.org/ Socket.io = Node.js上で動作するライブラリ WebSocketを利用して、リアルタイムWebを実現可能 (WebSocketは通信プロトコルの選択肢の一つ)
13.
Socket.io ブラウザ対応が充実 http://socket.io/
14.
コード例 サーバサイド # socket.io io =
require('socket.io').listen(config.SOCKET_PORT); io.sockets.on 'connection', (socket) -> socket.on 'message', (message) -> obj = JSON.parse(message) message = obj.coord + ':' + socket.id; socket.emit("message", message) socket.broadcast.emit("message", message) socket.on 'disconnect', () -> # nothing to do
15.
コード例 クライアントサイド // 接続時 var socket
= io.connect(CONFIG.SOCKET_HOST); // 受信時 socket.on('message', function (msg){ var data = msg.split(':'), userId = data[2], // マウスカーソルを動かしたユーザの識別子 position = [data[0], data[1]], // マウスカーソルの座標 page_url = data[3]; // マウスカーソルを動かしたユーザのマウスカーソルを自分の画面に描画する renderCursor(userId, position, page_url); });
16.
コード例 クライアントサイド // 送信時 var handler
= function (event) { var x, y, window = $(document); x = event.pageX / window.width(); y = event.pageY / window.height(); var send_data = {"coord": [x, y].join(":"), "page_url": page_url}; socket.send(JSON.stringify(send_data)); }; // イベントハンドラを設定 $(document).mousemove(handler);
17.
今回使う(かもしれない)ところ 例えばこんなやつ http://ameblo.jp/ameba--customize/entry-11276330557.html
18.
今回使う(かもしれない)ところ 指定のセグメントに対して実行する。 ⇒ コネクションの識別が必要 ストレージ(mongoDB)を利用して、 ユーザ識別子とコネクションの識別子をマッピング userId (unique) connectionId (unique) status 1 Zc5YSKMrfGhf active 2 E4ydv6F6h43Y active 3 jA8atTMjeLKi inactive
19.
今回使う(かもしれない)ところ Some Events Client ----- Server ⑤ ④ DB ① 施策判定 ② ③ socket userId :
xx connId: yy
20.
気を付けたいところ リソース面 ・ 結局TCP/IPの上の技術なので、 TCPコネクションを維持するために、 ファイルディスクリプタを消費する。 ⇒ PV単位とかで生成するとメモリ死なないか怖い。 ⇒ チューニングとサイジングが重要 ⇒ githubに負荷テストコード転がってるので、 やってみる
Download now