Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
stmkza
PPTX, PDF
560 views
WebSocketでリアルタイム通信 (第13回学生LT資料)
第13回学生LT(https://student-lt.connpass.com/event/91539/)で発表したスライドです。
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 14
2
/ 14
3
/ 14
4
/ 14
5
/ 14
6
/ 14
7
/ 14
8
/ 14
9
/ 14
10
/ 14
11
/ 14
12
/ 14
13
/ 14
14
/ 14
More Related Content
PPTX
20110622 haruyama webso]cket
by
Makoto Haruyama
PDF
Nodejs
by
和樹 川端
PDF
Play_using_Proxy
by
Kunio Miyamoto, Ph.D.
PDF
Google APP Engine vs リアルタイムウェブ
by
Hagiwara takayuki
KEY
PHP-Ninjaの裏側
by
Takayuki Miyauchi
PDF
JS開発環境を晒す。
by
Eiji Kuroda
PDF
Frontend optimization dena_creativeseminar
by
DeNA_open_events
PDF
VBScriptのダメなところ~その1~
by
bouzuya
20110622 haruyama webso]cket
by
Makoto Haruyama
Nodejs
by
和樹 川端
Play_using_Proxy
by
Kunio Miyamoto, Ph.D.
Google APP Engine vs リアルタイムウェブ
by
Hagiwara takayuki
PHP-Ninjaの裏側
by
Takayuki Miyauchi
JS開発環境を晒す。
by
Eiji Kuroda
Frontend optimization dena_creativeseminar
by
DeNA_open_events
VBScriptのダメなところ~その1~
by
bouzuya
What's hot
PDF
Js kusen
by
Net Kanayan
PDF
WSHで遊ぼう!
by
bouzuya
PPTX
フロントエンドの人にも知ってもらいたいサーバーの話
by
Hironobu Saitoh
PDF
モダンブラウザストレージ
by
Kazuyuki Mori
PDF
HttpとTelnetをつなぐ何か
by
ShigekiYamada
PPTX
クラウドのようなVPS 「ConoHa」 を使ってみよう +おまけ
by
Hironobu Saitoh
PPTX
Cloud Core VPSにマイクラ鯖を立てた話
by
deflis
PPTX
Mqttの通信を見てみよう
by
Suemasu Takashi
PDF
Capybaraで雑にWebスクレイピング
by
Koji Nakamura
PDF
Jaws三都物語 storage gateway
by
mamoru tateoka
PPTX
クラウドのようなVPS 「ConoHa」 を使ってみよう。
by
Hironobu Saitoh
PPTX
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会
by
ConoHa, GMO INTERNET
PDF
RVM with Server Environment
by
Yukimitsu Izawa
PPTX
レンタルサーバー/Vps/クラウド
by
Naoyuki Sano
PPT
node.js
by
Masataka Ohara
PDF
BestGems.org -RubyGemsランキングサイトのご紹介-
by
Misao X
PDF
JAWS-UG和歌山第0回キックオフミーティング LT
by
三七男 山本
PDF
20120525 mt websocket
by
Ryosuke MATSUMOTO
PDF
今日はMongoDBの話はしない
by
Akihiro Kuwano
PPTX
Varnish
by
Ayako Hatori
Js kusen
by
Net Kanayan
WSHで遊ぼう!
by
bouzuya
フロントエンドの人にも知ってもらいたいサーバーの話
by
Hironobu Saitoh
モダンブラウザストレージ
by
Kazuyuki Mori
HttpとTelnetをつなぐ何か
by
ShigekiYamada
クラウドのようなVPS 「ConoHa」 を使ってみよう +おまけ
by
Hironobu Saitoh
Cloud Core VPSにマイクラ鯖を立てた話
by
deflis
Mqttの通信を見てみよう
by
Suemasu Takashi
Capybaraで雑にWebスクレイピング
by
Koji Nakamura
Jaws三都物語 storage gateway
by
mamoru tateoka
クラウドのようなVPS 「ConoHa」 を使ってみよう。
by
Hironobu Saitoh
このべん第一回 ~ 「ConoHaってどんなVPS?」を勉強して3,000円クーポンをもらっちゃおうの会
by
ConoHa, GMO INTERNET
RVM with Server Environment
by
Yukimitsu Izawa
レンタルサーバー/Vps/クラウド
by
Naoyuki Sano
node.js
by
Masataka Ohara
BestGems.org -RubyGemsランキングサイトのご紹介-
by
Misao X
JAWS-UG和歌山第0回キックオフミーティング LT
by
三七男 山本
20120525 mt websocket
by
Ryosuke MATSUMOTO
今日はMongoDBの話はしない
by
Akihiro Kuwano
Varnish
by
Ayako Hatori
Similar to WebSocketでリアルタイム通信 (第13回学生LT資料)
PDF
第4回鹿児島node.jsの会資料_内村
by
Koichi Uchimura
PDF
Gtug girls meetup web socket handson
by
Jxck Jxck
PDF
HTML5-pronama-study
by
Naoya Inada
PPTX
SL囲む会東京5 Nodejs×Silverlightではまったこと
by
normalian
PPTX
再入門、サーバープッシュ技術
by
Shin Sekaryo
PDF
Janogia20120921 yoshinotakeshi
by
Keisuke Ishibashi
PDF
WebSocket + Node.jsでつくるチャットアプリ
by
Kohei Kadowaki
PDF
HTML5など社内勉強会 Vol.8 - WebSocket
by
George Harada
PDF
後期第七回ネットワークチーム講座資料
by
densan_teacher
PDF
Html5, Web Applications 2
by
totty jp
PDF
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
by
You_Kinjoh
PDF
Socket.io 1.0の話
by
Naoyuki Kanezawa
PPTX
WebRTC meetup Tokyo 1
by
mganeko
PDF
WebSocketを学ぼう!
by
Katsuki Chousa
PDF
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
PPTX
120512 metro styleapp_javascript
by
Takayoshi Tanaka
PDF
AndroidでWebSocket
by
Kohei Kadowaki
PDF
RustでWebSocketな自社APIを使う
by
Satoshi Yoshikawa
PDF
Web socketドロンくん その後-
by
Yuuichi Akagawa
PPTX
実装だって楽したい!〜リアルタイム通信はじめの一歩〜
by
Yuka Tokuyama
第4回鹿児島node.jsの会資料_内村
by
Koichi Uchimura
Gtug girls meetup web socket handson
by
Jxck Jxck
HTML5-pronama-study
by
Naoya Inada
SL囲む会東京5 Nodejs×Silverlightではまったこと
by
normalian
再入門、サーバープッシュ技術
by
Shin Sekaryo
Janogia20120921 yoshinotakeshi
by
Keisuke Ishibashi
WebSocket + Node.jsでつくるチャットアプリ
by
Kohei Kadowaki
HTML5など社内勉強会 Vol.8 - WebSocket
by
George Harada
後期第七回ネットワークチーム講座資料
by
densan_teacher
Html5, Web Applications 2
by
totty jp
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
by
You_Kinjoh
Socket.io 1.0の話
by
Naoyuki Kanezawa
WebRTC meetup Tokyo 1
by
mganeko
WebSocketを学ぼう!
by
Katsuki Chousa
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
120512 metro styleapp_javascript
by
Takayoshi Tanaka
AndroidでWebSocket
by
Kohei Kadowaki
RustでWebSocketな自社APIを使う
by
Satoshi Yoshikawa
Web socketドロンくん その後-
by
Yuuichi Akagawa
実装だって楽したい!〜リアルタイム通信はじめの一歩〜
by
Yuka Tokuyama
WebSocketでリアルタイム通信 (第13回学生LT資料)
1.
WebSocketでリアルタイム通信 stmkza (ストーム)
2.
WebSocketとは? • サーバからデータを送る方法 • ブラウザプラグインがいらない •
軽い • HTTP使えるならポート解放などは不要 • サーバもファイアウォールの設定不要
3.
通信の中身 • HTTPで接続する • Upgrade:
WebSocket と Connection: upgrade でプロトコル切り替え • 使うポートは80番ポート(SSLだと443)と、変わらない • ↑にあるようにSSL使えます • 実際の通信を見せようと思ったけれど、うまくできませんでした。。。
4.
今から話すこと • C++でサーバを実装してみる には時間が足りませんでした。。。。 •
時間がなくなったのは、今週ずっと夜はプライムビデオでアニメ観てたか らです。。。すみません m(_ _)m • さっきのような感じで宣伝?を続ける のもネタが尽きる。。。 • 実際に使う方法を説明することにします。Socket.io使います。 • バーチャル学生LT用に作ったチャットで使っているサーバを紹介します
5.
普通のページに使ってるもの
6.
Socket.ioで一番基本的な構成 Socket.io
7.
Socket.ioで一番基本的な構成 Socket.io 問題点 そのままだと同一生成元ポリシーに引っかかる サーバの生IPを知らせる必要がある ファイアウォールに引っかかることがある SSL対応するにはnodeでHTTPサーバ建てる必要ある
8.
こうすれば解決する Socket.io
9.
ただし、このままだと うまく動かないので、 nginxの設定を変える
10.
nginxの設定 • Socket.ioが使うのは /socket.io/ •
HTTPバージョンを1.1に限定する • Upgradeヘッダを通す • Connectionヘッダに "upgrade"を設定する upstream socketio { server 127.0.0.1:8080; } server { server_name example.com; root /path/to/webroot; listen 80; index index.php; location ^~ /socket.io/ { proxy_pass http://socketio; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } サンプルはGistにも書きました ln.stmkza.net/socketio
11.
CloudFlareの対応について • 実は結構前(2014年くらい)からWebSocketに対応していたらしいです • Networkから設定できる(デフォルトでON?) サンプルはGistにも書きました ln.stmkza.net/socketio
12.
ご静聴ありがとうございました サンプルはGistにも書きました ln.stmkza.net/socketio
13.
おまけ • GDPR関係の事情でEUからのアクセスを拒否したいときにもCloudFlareが 便利です • Network
> IP Geolocation をONにするだけで HTTPヘッダに国コードが入 ってきます。 • これを使ってnginxでアクセス拒否するようにしました
14.
設定内容 http { map $http_cf_ipcountry
$is_eu_access { default no; AT yes; BE yes; BG yes; HR yes; CY yes; CZ yes; DK yes; EE yes; FI yes; FR yes; DE yes; GR yes; HU yes; IE yes; IT yes; LV yes; LT yes; LU yes; MT yes; NL yes; PL yes; PT yes; RO yes; SK yes; SI yes; ES yes; SE yes; } } server { # 略 if($is_eu_access = yes) { return 403; } } ln.stmkza.net/cfeu とても長いので、Gistをご覧ください ↓にURLが書いてあります
Editor's Notes
#2
みなさん初めまして、stmkza(ストーム)です。この前の多数決?で読み方が決まったので、アイコンを"あれ"っぽくしてみました(笑) LTとかの発表をするのは初めてなんですけども、いろいろ軽く今から発表させていただきます。 よろしくお願いします。 まず、今回発表する内容なんですけれども、バーチャル学生LTの視聴ページでは実はリアルタイム通信を使ってチャットとかプレイヤー操作とかをリモートでできるようにしてあるんですけど、その時にWebSocketを使ってみたんです。 その時に色々わかったこと とかをここで話させていただければなと思います。
#3
じゃあ、まずWebSocketの特徴をざっくりと説明させていただきます。 まず、WebSocketを一言で説明すると、「サーバからデータを送る方法」です。 今まではそういうリアルタイム通信がしたかったら、ネイティブアプリ作ったりFlashとかJavaApplet使っていましたが、WebSocketはJavaScriptから直接使えるので、プラグインがいらないんです。だから、スマホとかにも対応できます。 また、サーバもクライアントも軽いんです。今まで無理やりJavaScriptで実装するとなると、1秒ごとにサーバにリクエストを送ったり、Commet使って実装していたんですが、通信量的にも、最大コネクション数とか負荷的にも全くよろしくなかったんですが、WebSocketは専用のプロトコル作っちゃったので、負荷的がかなり小さいです。 また、ブラウザがする普通の通信と同じHTTPを使っているので、普通のページが開けるのであればWebSocketも使えます。ただ、プロクシとかが対応してないこともあるので、それだけは注意です。 サーバ側も新しくポートを開ける必要はないです。Webサーバの設定をいろいろ弄るだけですぐ使えるようにできます。
#4
具体的な通信について軽く説明しようと思うのですが、通信の手順としては、 ・まず、HTTPで普通に接続して、 ・HTTPステータスコードの101番、Switching Protocolsと、Upgradeヘッダを使ってWebSocketプロトコルに切り替えます。 ・この時でもあくまでHTTPの中でプロトコル変えているので、HTTP1.0とHTTP1.1を切り替えているのと大して違いはありません。だから使うポートは変わりません。これがさっき「ポート開放がいらない」って言った理由です。 ・また、SSLはHTTPよりも下のレイヤーで動いているので、WebSocketだからSSLが使えないってことはありません。 ・本当はここで実際の通信を見せたかったのですが、Wiresharkがちゃんと働いてくれなかったので見せることができません、すみませんでした。。。
#5
それでは今から話すことについてですが、いろいろ考えましたが、 ・C++で実際にサーバを作ろうかと思っていましたが、時間がいつの間にか無くなってて諦めました。。。 ・今週、ずっとプライムビデオでアニメ見てたからです。あれ、結構危険ですよ。やめられなくなる ・だからと言って、さっきみたいなWebSocketの宣伝?を続けるほど詳しいわけではないから、 ・実際に使う方法を説明します。Socket.io使うといい感じにできそうだったので、今回はsocket.ioを使います ・ちなみにこれはバーチャル学生LTのチャットとかで使った技術なので、何か脆弱性見つけるヒントになるかもしれません。正直怖いです。。。。
#6
普通のPHPで作ったページはこんな感じになってます。 php-fpmで動かしたのをnginxを通して、それをさらにCloudFlareでリバースプロキシします。
#7
そして、Socket.io使うときの一番基本的な構成は、node.jsでサーバ建てて、それに直接アクセスするっていう構成です。 開発時とかに使うと手軽でいいです。 ただ、もちろん問題点があって、
#8
そのままだとポートが違うので同一性制限ポリシーに引っかかります。node.jsでプレイヤーページも動かせばいいはずですが、同時アクセスとか負荷的に耐えれるか自信がないので、正直CloudFlareとnginxを通したいです。。。あ、でもこれは全く調べてないので、もしかしたら大丈夫かもしれません。ここにいるnoderの皆さんすみません m(_ _)m あとは、サーバの生IPでアクセスするとなると、SSHポートへのアタックとかDDoSが怖いのであまりやりたくないです。一応SSHポート変えて公開鍵認証にしてるけど怖いですw あとは、すでに80番ポート使ってるので他のポート使う必要あるんですが、そしたらファイアウォールに引っかかる環境からアクセスしてる時に使えないので、そこもまずい気がします。 さらに、SSLに対応させるにはSocket.io単体だと無理で、HTTPモジュール使ってサーバ作ってそれに紐づける必要があるらしいです。
#9
自分的にはこのような感じで、さっきのPHPをnode.jsに変えたような構成にしたいので、これを目指して設定します。
#10
ただ、実際に試してみたらうまく動かなかったので、nginxの設定を変えました。
#11
こんな感じに設定したのですが、右のサンプルはGistにもあげたのでそちらを見てくれたらいいかと思います。QRコードはちょっとしばらく表示しておきます。 設定の大体の内容としては、 ・Socket.ioが使う /socket.io/に対して、 ・HTTP1.1を使わせて、 ・Upgradeヘッダをつけて、 ・Connection: upgradeを設定する っていうことをしました。Upgradeヘッダがnginxを通ると消えてしまうっぽかったので、このような設定が必要です。
#12
ちなみにCloudFlareはWebSocketに2014年くらいから対応していて、設定画面からWebSocketをONにできますが、デフォルトでONな気がして、この設定の必要性がよくわかりません。。。 Networkから設定できますが、プランによって最大接続数が違うっぽいです。 Freeプランだと"Hobby or demonstration site"って書いてあるんですが、具体的な制限値は見つけれませんでした。
#13
ということで、ご静聴ありがとうございました。
#14
おまけで、CloudFlareを使っているなら国の判別が簡単にできて、HTTPヘッダに CF-IPCountryとして国コードが追加されます。 これを使って、EUからのアクセスを拒否できます。「IP/Country Block」っていうアクセス元(もと)の国を拒否する設定は、月20ドルのProプラン以上じゃないと使えませんが、この機能を使うことでFreeプランでもそのような設定ができます。
#15
具体的な設定内容ですが、EUに加盟してる国が多すぎるので、これもまたGistにあげました。ぜひご覧ください。 それではご静聴ありがとうございました。
Download