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
光晶 上原
11,334 views
Unity WebSocket
Technology
◦
Read more
35
Save
Share
Embed
Embed presentation
Download
Downloaded 101 times
1
/ 78
2
/ 78
3
/ 78
4
/ 78
5
/ 78
6
/ 78
7
/ 78
8
/ 78
9
/ 78
10
/ 78
11
/ 78
12
/ 78
13
/ 78
14
/ 78
15
/ 78
16
/ 78
17
/ 78
18
/ 78
19
/ 78
20
/ 78
21
/ 78
22
/ 78
23
/ 78
24
/ 78
25
/ 78
26
/ 78
27
/ 78
28
/ 78
29
/ 78
30
/ 78
31
/ 78
32
/ 78
33
/ 78
34
/ 78
35
/ 78
36
/ 78
37
/ 78
38
/ 78
39
/ 78
40
/ 78
41
/ 78
42
/ 78
43
/ 78
44
/ 78
45
/ 78
46
/ 78
47
/ 78
48
/ 78
49
/ 78
50
/ 78
51
/ 78
52
/ 78
53
/ 78
54
/ 78
55
/ 78
56
/ 78
57
/ 78
58
/ 78
59
/ 78
60
/ 78
61
/ 78
62
/ 78
63
/ 78
64
/ 78
65
/ 78
66
/ 78
67
/ 78
68
/ 78
69
/ 78
70
/ 78
71
/ 78
72
/ 78
73
/ 78
74
/ 78
75
/ 78
76
/ 78
77
/ 78
78
/ 78
More Related Content
PDF
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
by
モノビット エンジン
PDF
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
by
Kohei Kadowaki
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
PDF
MagicOnion入門
by
torisoup
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
by
Yoshifumi Kawai
PDF
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
by
Uptime Technologies LLC (JP)
PDF
Amazon Aurora - Auroraの止まらない進化とその中身
by
Amazon Web Services Japan
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
by
モノビット エンジン
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
by
Kohei Kadowaki
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
by
UnityTechnologiesJapan002
MagicOnion入門
by
torisoup
オンラインゲームの仕組みと工夫
by
Yuta Imai
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
by
Yoshifumi Kawai
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
by
Uptime Technologies LLC (JP)
Amazon Aurora - Auroraの止まらない進化とその中身
by
Amazon Web Services Japan
What's hot
PPTX
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
by
Game Tools & Middleware Forum
PDF
TLS, HTTP/2演習
by
shigeki_ohtsu
PDF
MonotaRO のデータ活用と基盤の過去、現在、未来
by
株式会社MonotaRO Tech Team
PDF
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
PDF
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
by
Amazon Web Services Japan
PDF
UE4でマルチプレイヤーゲームを作ろう
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
by
NTT DATA Technology & Innovation
PPTX
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
by
WESEEKWESEEK
PPTX
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
by
NTT DATA Technology & Innovation
PDF
UE4における大規模レベル実装ワークフローとブループリント活用事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
PDF
Jetson x Azure ハンズオン DeepStream Azure IoT
by
Deep Learning Lab(ディープラーニング・ラボ)
PDF
Building the Game Server both API and Realtime via c#
by
Yoshifumi Kawai
PDF
"Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
by
Yahoo!デベロッパーネットワーク
PPTX
KubernetesバックアップツールVeleroとちょっとした苦労話
by
imurata8203
PDF
マイクロサービス化に向けて
by
HIRA
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
by
TAKUYA OHTA
PDF
まずやっとくPostgreSQLチューニング
by
Kosuke Kida
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
by
Game Tools & Middleware Forum
TLS, HTTP/2演習
by
shigeki_ohtsu
MonotaRO のデータ活用と基盤の過去、現在、未来
by
株式会社MonotaRO Tech Team
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
by
Amazon Web Services Japan
UE4でマルチプレイヤーゲームを作ろう
by
エピック・ゲームズ・ジャパン Epic Games Japan
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
by
NTT DATA Technology & Innovation
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
by
WESEEKWESEEK
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
by
NTT DATA Technology & Innovation
UE4における大規模レベル実装ワークフローとブループリント活用事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
Jetson x Azure ハンズオン DeepStream Azure IoT
by
Deep Learning Lab(ディープラーニング・ラボ)
Building the Game Server both API and Realtime via c#
by
Yoshifumi Kawai
"Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
by
Yahoo!デベロッパーネットワーク
KubernetesバックアップツールVeleroとちょっとした苦労話
by
imurata8203
マイクロサービス化に向けて
by
HIRA
マイクロにしすぎた結果がこれだよ!
by
mosa siru
IT エンジニアのための 流し読み Windows - Windows 共有 PC モード
by
TAKUYA OHTA
まずやっとくPostgreSQLチューニング
by
Kosuke Kida
Similar to Unity WebSocket
PDF
年の瀬リアルタイム通信サーバ勉強会
by
モノビット エンジン
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
年の瀬!リアルタイム通信ゲームサーバ勉強会
by
monobit
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
by
モノビット エンジン
PDF
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
by
Satoshi Yamafuji
PDF
WebRTC入門 ~沖縄編~
by
Ryosuke Otsuya
PPTX
ゲームの通信をつくる仕事はどうなるのだろう?
by
Kengo Nakajima
PDF
究極のゲーム用通信プロトコルを探せ!
by
Ryosuke Otsuya
PDF
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
by
Yuusuke Takeuchi
PDF
【CEDEC2017】新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!
by
モノビット エンジン
PDF
20130315 abc firefox_os
by
Tomoaki Konno
PDF
「Tiのソケットで待ってる」Titanium Nagoya Chatroom Vol.2
by
Akira Suzuki
PDF
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
by
erakazu
PDF
PlayFramework1.2.4におけるWebSocket
by
Kazuhiro Hara
KEY
P2Pって何?
by
Junya Yamaguchi
PDF
Gaeja20121130
by
Shinichiro Takezaki
PDF
Cedec2013 photon network engine
by
GMO GlobalSign Holdings K.K.
PDF
技術の循環
by
trifort misato
PDF
Onlinegame entrylevel 201305
by
Kengo Nakajima
年の瀬リアルタイム通信サーバ勉強会
by
モノビット エンジン
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
年の瀬!リアルタイム通信ゲームサーバ勉強会
by
monobit
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
by
モノビット エンジン
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
by
Satoshi Yamafuji
WebRTC入門 ~沖縄編~
by
Ryosuke Otsuya
ゲームの通信をつくる仕事はどうなるのだろう?
by
Kengo Nakajima
究極のゲーム用通信プロトコルを探せ!
by
Ryosuke Otsuya
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
by
Yuusuke Takeuchi
【CEDEC2017】新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!
by
モノビット エンジン
20130315 abc firefox_os
by
Tomoaki Konno
「Tiのソケットで待ってる」Titanium Nagoya Chatroom Vol.2
by
Akira Suzuki
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
by
erakazu
PlayFramework1.2.4におけるWebSocket
by
Kazuhiro Hara
P2Pって何?
by
Junya Yamaguchi
Gaeja20121130
by
Shinichiro Takezaki
Cedec2013 photon network engine
by
GMO GlobalSign Holdings K.K.
技術の循環
by
trifort misato
Onlinegame entrylevel 201305
by
Kengo Nakajima
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
Unity WebSocket
1.
Unity + WebSocketで広がる
オンラインゲームの可能性 株式会社セガ 上原光晶 12年10月4日木曜日 1
2.
Contents
WebSocketの紹介 WebSocketを使ったデモ(ブラウザ・Unity) WebSocketのメリット・デメリット まとめ 12年10月4日木曜日 2
3.
自己紹介
2006年にシステム屋からアプリ開発者に 2008年頃から、携帯電話向けオンラインゲー ムの主にサーバを担当(iアプリ) 2012年2月にセガへ転職し、現在はUnityを 使ったスマートフォン向けオンラインゲームを 開発中 12年10月4日木曜日 3
4.
WebSocketとは? 12年10月4日木曜日
4
5.
WebSocketとは
コンピュータ・ネットワーク用の通信規格の1 つ。W3CとIETFがウェブサーバーとウェブブ ラウザとの間の通信のために規定を予定して いる双方向通信用の技術規格であり、APIは W3Cが、WebSocket プロトコルはIETFが策定 に関与している。プロトコルの仕様は RFC 6455。TCP上で動く。(Wikipediaより引用) 12年10月4日木曜日 5
6.
何が出来るのか? 12年10月4日木曜日
6
7.
ブラウザ上でのデモ 12年10月4日木曜日
7
8.
Unity + WebSocket
で何が出来るのか 12年10月4日木曜日 8
9.
Unity + WebSocketのデモ 12年10月4日木曜日
9
10.
リアルタイム通信が出来る
ゲームサーバ WebSocketの コネクション ユーザA ユーザB 12年10月4日木曜日 10
11.
リアルタイム通信が出来る
ゲームサーバ ① 移動先を クリック ユーザA ユーザB 12年10月4日木曜日 11
12.
リアルタイム通信が出来る
② 移動先座標を ゲームサーバ サーバに通知 ① 移動先を クリック ユーザA ユーザB 12年10月4日木曜日 12
13.
リアルタイム通信が出来る
② 移動先座標を ゲームサーバ サーバに通知 ③ 即座に、移動先の 座標を他の クライアントに通知 ① 移動先を クリック ユーザA ユーザB 12年10月4日木曜日 13
14.
Unity + WebSocketで、リアルタイムの
オンラインゲームが作れるようになる! 12年10月4日木曜日 14
15.
Unity + WebSocketで、リアルタイムの
オンラインゲームが作れるようになる! とは言え、これまでも数多く、 リアルタイムのオンラインゲームが 存在していた 12年10月4日木曜日 15
16.
UO(ウルティマオンライン)や
MHF(モンハンフロンティア)、 最近ではDiabloIIIなんてのも出た 12年10月4日木曜日 16
17.
『ファンタシースターオンライン2』
本日正式サービス開始! 12年10月4日木曜日 17
18.
『三国志コンクエスト』
Unityで開発したオンラインゲーム SLG+ACTを融合。ACTはリアルタイム方式 12年10月4日木曜日 18
19.
これまでと何が違うのか 12年10月4日木曜日
19
20.
これまでのオンラインゲームは、直接
TCP/IPを使っていた(場合が多い) 12年10月4日木曜日 20
21.
これまでのオンラインゲームは、直接
TCP/IPを使っていた(場合が多い) TCP/IPで直接通信するのと、 WebSocketで通信することの違いは? 12年10月4日木曜日 21
22.
WebSocketには、TCP/IPを直接使うこ
とに対して3つのメリットが発生する。 12年10月4日木曜日 22
23.
WebSocketのメリット 12年10月4日木曜日
23
24.
WebSocketのメリット
1.既存インフラへの影響の少なさ 12年10月4日木曜日 24
25.
WebSocketのメリット
1.既存インフラへの影響の少なさ 2.メッセージ単位の送受信 12年10月4日木曜日 25
26.
WebSocketのメリット
1.既存インフラへの影響の少なさ 2.メッセージ単位の送受信 3.暗号化 12年10月4日木曜日 26
27.
既存インフラへの影響の少なさ 12年10月4日木曜日
27
28.
既存インフラへの影響の少なさ
TCP/IPでは、他のプロセスが使っていない専用のポー ト番号で通信を行う場合が多い(35000番ポート等) 12年10月4日木曜日 28
29.
既存インフラへの影響の少なさ
TCP/IPでは、他のプロセスが使っていない専用のポー ト番号で通信を行う場合が多い(35000番ポート等) WebSocketサーバは、Webサーバが兼任する場合が多 く、セッション接続にHTTPを利用するため、80/443 番ポートでそのまま接続できる 12年10月4日木曜日 29
30.
既存インフラへの影響の少なさ
ゲームサーバ TCP/IPを直接 使う場合、専用 の通信を行うた めの穴を開ける 必要があった クライアント 12年10月4日木曜日 30
31.
既存インフラへの影響の少なさ
ゲームサーバ TCP/IPを直接 使う場合、専用 の通信を行うた めの穴を開ける game.server.com:35000 に接続 必要があった クライアント 12年10月4日木曜日 31
32.
既存インフラへの影響の少なさ
ゲームサーバ TCP/IPを直接 使う場合、専用 の通信を行うた 35000番ポートへの アクセス許可 めの穴を開ける game.server.com:35000 に接続 必要があった クライアント 12年10月4日木曜日 32
33.
既存インフラへの影響の少なさ
ゲームサーバ TCP/IPを直接 35000番ポートへのア クセスをサーバに フォワード 使う場合、専用 の通信を行うた 35000番ポートへの アクセス許可 めの穴を開ける game.server.com:35000 に接続 必要があった クライアント 12年10月4日木曜日 33
34.
既存インフラへの影響の少なさ
ゲームサーバ WebSocketは、 HTTPが使える環 境であればそのま ま利用出来る(プ ロキシを通過する ことも可能) クライアント 12年10月4日木曜日 34
35.
既存インフラへの影響の少なさ
ゲームサーバ WebSocketは、 HTTPが使える環 境であればそのま ま利用出来る(プ ロキシを通過する ws://game.server.com/wsurl/ に接続 ことも可能) クライアント 12年10月4日木曜日 35
36.
既存インフラへの影響の少なさ
ゲームサーバ WebSocketは、 HTTPが使える環 境であればそのま 80番ポートへの ま利用出来る(プ HTTPアクセス ロキシを通過する ws://game.server.com/wsurl/ に接続 ことも可能) クライアント 12年10月4日木曜日 36
37.
既存インフラへの影響の少なさ
ゲームサーバ WebSocketは、 80番ポートの WebSocketへの HTTPが使える環 アクセスをサーバに フォワード 境であればそのま 80番ポートへの ま利用出来る(プ HTTPアクセス ロキシを通過する ws://game.server.com/wsurl/ に接続 ことも可能) クライアント 12年10月4日木曜日 37
38.
メッセージ単位の送受信 12年10月4日木曜日
38
39.
メッセージ単位の送受信
TCP/IPでは、独自のプロトコル仕様を定義し、 送受信処理を実装していた 12年10月4日木曜日 39
40.
メッセージ単位の送受信
TCP/IPでは、独自のプロトコル仕様を定義し、 送受信処理を実装していた WebSocketではメッセージ単位の送受信が規定 されており、メッセージを構成する部分はライブ ラリ側で実装される 12年10月4日木曜日 40
41.
メッセージ単位の送受信
メッセージID データサイズ データ本体 2byte 2byte XXbyte ソースコード例 for( ; ; ) { short messageId = stream.readShort(); short dataSize = stream.readShort(); byte[] data = new byte[dataSize]; int readSize = 0; while( true ) { // ★ データの読み込みが完了するまでループ readSize += stream.read( data, readSize, dataSize - readSize ); if( readSize >= dataSize ) { break; } } execute( messageId, data ); } 12年10月4日木曜日 41
42.
メッセージ単位の送受信
サーバ・クライアントの双方で実装する必要がある。 エラー処理も必要。 12年10月4日木曜日 42
43.
メッセージ単位の送受信
サーバ・クライアントの双方で実装する必要がある。 エラー処理も必要。 サーバでは多くのクライアントが接続されるため、負 荷対策やメモリ管理も必要となる。 12年10月4日木曜日 43
44.
メッセージ単位の送受信
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-------+-+-------------+-------------------------------+ |F|R|R|R| opcode|M| Payload len | Extended payload length | |I|S|S|S| (4) |A| (7) | (16/64) | |N|V|V|V| |S| | (if payload len==126/127) | | |1|2|3| |K| | | +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + | Extended payload length continued, if payload len == 127 | + - - - - - - - - - - - - - - - +-------------------------------+ | |Masking-key, if MASK set to 1 | +-------------------------------+-------------------------------+ | Masking-key (continued) | Payload Data | +-------------------------------- - - - - - - - - - - - - - - - + : Payload Data continued ... : + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Payload Data continued ... | +---------------------------------------------------------------+ WebSocketでは、テキスト or バイナリ形式の データの送受信がプロトコルとして規定されている 12年10月4日木曜日 44
45.
メッセージ単位の送受信
ソースコード例 // bytebufferが受信データそのもの protected void onBinaryMessage(ByteBuffer bytebuffer) throws IOException { short messageId = bytebuffer.getShort(); execute(messageId, bytebuffer); } データ受信処理が大幅に簡略化される 12年10月4日木曜日 45
46.
暗号化 12年10月4日木曜日
46
47.
暗号化
HTTPと同様に、WebSocketの暗号化も プロトコルとして規定されている 12年10月4日木曜日 47
48.
暗号化
HTTPと同様に、WebSocketの暗号化も プロトコルとして規定されている http:// => https:// ws:// => wss:// 12年10月4日木曜日 48
49.
暗号化
HTTPと同様に、WebSocketの暗号化も プロトコルとして規定されている http:// => https:// ws:// => wss:// デフォルトポート番号 80 => 443 12年10月4日木曜日 49
50.
WebSocketのメリット
既存インフラへの影響の少なさ メッセージ単位の送受信 暗号化 12年10月4日木曜日 50
51.
WebSocketのメリット
既存インフラへの影響の少なさ メッセージ単位の送受信 暗号化 これらは、HTTPの特徴でもある 12年10月4日木曜日 51
52.
WebSocketのメリット
つまり、TCP/IPの軽量な双方向通信と、 HTTPの利便性の両方のメリットを持つ。 12年10月4日木曜日 52
53.
WebSocketのメリット
つまり、TCP/IPの軽量な双方向通信と、 HTTPの利便性の両方のメリットを持つ。 これらは既存でも実現できていたが、非常に 面倒であり、相応の技術力を要していた。 12年10月4日木曜日 53
54.
WebSocketのメリット
つまり、TCP/IPの軽量な双方向通信と、 HTTPの利便性の両方のメリットを持つ。 これらは既存でも実現できていたが、非常に 面倒であり、相応の技術力を要していた。 => オンラインゲームの通信部分の 開発のハードルが大幅に下がった 12年10月4日木曜日 54
55.
一方、デメリットは無いのか 12年10月4日木曜日
55
56.
WebSocketのデメリット
現状、考えられるデメリットは2つ。 12年10月4日木曜日 56
57.
WebSocketのデメリット
現状、考えられるデメリットは2つ。 1.Request - Response形式が無い 12年10月4日木曜日 57
58.
WebSocketのデメリット
現状、考えられるデメリットは2つ。 1.Request - Response形式が無い 2.実績が少ない 12年10月4日木曜日 58
59.
Request - Response形式が無い
WebSocketでは一方向のメッセージの定 義しか無いため、Request - Response 形式のメッセージの送受信を行う場合 は、独自に実装が必要。 12年10月4日木曜日 59
60.
実績が少ない
2011年12月:RFC6455規定 2012年01月:Jetty対応 2012年02月:node.js対応 2012年03月:Tomcat対応(テスト実装) 2012年06月:UniWeb対応 動作実績は、せいぜい半年程度 12年10月4日木曜日 60
61.
デモに至るまで・・・ 12年10月4日木曜日
61
62.
デモに至るまで・・・
Tomcat7.0.27�+ Google Chrome => OK 12年10月4日木曜日 62
63.
デモに至るまで・・・
Tomcat7.0.27�+ Google Chrome => OK Tomcat7.0.27�+ Unity(websocket-sharp) => プロトコルバージョン不一致により通信不可 12年10月4日木曜日 63
64.
デモに至るまで・・・
Tomcat7.0.27�+ Google Chrome => OK Tomcat7.0.27�+ Unity(websocket-sharp) => プロトコルバージョン不一致により通信不可 Tomcat7.0.27�+ Unity(SuperWebSocket) => SuperWebSocket動作せず(VisualStudioだとOK) 12年10月4日木曜日 64
65.
デモに至るまで・・・
Tomcat7.0.27�+ Google Chrome => OK Tomcat7.0.27�+ Unity(websocket-sharp) => プロトコルバージョン不一致により通信不可 Tomcat7.0.27�+ Unity(SuperWebSocket) => SuperWebSocket動作せず(VisualStudioだとOK) Jetty8.1.3�+ Unity(websocket-sharp) => OKだがプロトコルバージョンが古い 12年10月4日木曜日 65
66.
デモに至るまで・・・
Tomcat7.0.27�+ Google Chrome => OK Tomcat7.0.27�+ Unity(websocket-sharp) => プロトコルバージョン不一致により通信不可 Tomcat7.0.27�+ Unity(SuperWebSocket) => SuperWebSocket動作せず(VisualStudioだとOK) Jetty8.1.3�+ Unity(websocket-sharp) => OKだがプロトコルバージョンが古い Tomcat7.0.27�+ Unity(UniWeb) => いずれかのバグにより動作不可 12年10月4日木曜日 66
67.
デモに至るまで・・・
UniWebの以下の箇所を修正したら、うまく動いた! Response.cs 171 cacheable = string.Compare (GetHeader ("Etag"), "", true) != 0; 172 chunked = string.Compare (GetHeader ("Transfer-Encoding"), "chunked", true) == 0; 173 zipped = string.Compare (GetHeader ("Content-Encoding"), "gzip", true) == 0; 174 byte[] buffer = new byte[1024]; 175 chunked = false; // ★★★ この行を挿入 ★★★ 176 177 178 if (chunked) { while (true) { Response.cs 175: chunked = false; 179 // Collect Body 180 var hexLength = ReadLine (inputStream); 12年10月4日木曜日 67
68.
デモに至るまで・・・
UniWebの以下の箇所を修正したら、うまく動いた! Response.cs 171 cacheable = string.Compare (GetHeader ("Etag"), "", true) != 0; 172 chunked = string.Compare (GetHeader ("Transfer-Encoding"), "chunked", true) == 0; 173 zipped = string.Compare (GetHeader ("Content-Encoding"), "gzip", true) == 0; 174 byte[] buffer = new byte[1024]; 175 chunked = false; // ★★★ この行を挿入 ★★★ 176 177 178 if (chunked) { while (true) { Response.cs 175: chunked = false; 179 // Collect Body 180 var hexLength = ReadLine (inputStream); まだまだ現時点ではイバラの道 12年10月4日木曜日 68
69.
まとめ
現時点では実績の少ないWebSocketだが、オンライ ンゲームを作る上での有用性には確信が持てる (RFC6455にも、「ゲームでも使える」との記述が ある) 今後、オンラインゲームはWebSocketで作るのが当 たり前、という時代が来る!かも知れない・・・ 12年10月4日木曜日 69
70.
Unity + WebSocketで、オンライン
ゲームの新しい時代を切り拓け!! 12年10月4日木曜日 70
71.
ご清聴、ありがとうございました。 12年10月4日木曜日
71
72.
デモに至るまで・・・ 12年10月4日木曜日
72
73.
デモに至るまで・・・
TomcatがWebSocketを実装した!? => Tomcat7.0.27(3/31リリース)インストール => Google Chromeでチャットの動作確認! 12年10月4日木曜日 73
74.
デモに至るまで・・・
TomcatがWebSocketを実装した!? => Tomcat7.0.27(3/31リリース)インストール => Google Chromeでチャットの動作確認! Unityをクライアントにしよう! => Unity + websocket-sharp を使う => バージョン不一致で接続不可 websocket-sharpの更新が1年以上停止していた 12年10月4日木曜日 74
75.
デモに至るまで・・・
他のC#の実装を探す => SuperWebSocketというのがあるらしい => Unityに組み込もうと悪戦苦闘 => VisualStudioでは動くがUnityでは動かず => 技術不足により断念 12年10月4日木曜日 75
76.
デモに至るまで・・・
他のC#の実装を探す => SuperWebSocketというのがあるらしい => Unityに組み込もうと悪戦苦闘 => VisualStudioでは動くがUnityでは動かず => 技術不足により断念 Tomcatを諦めてJettyを試す => 慣れないJettyに戸惑いつつも単体動作完了 => Unity + websocket-sharp とJettyとの通信成功 => 但し、RFC6455ではないのでちょっとモヤモヤ (websocket-sharpが古いため) 12年10月4日木曜日 76
77.
デモに至るまで・・・
UnityのAssetであるUniWebが、WebSocketをサポー トしたらしい! => Tomcat7.0.27 + Unity3.5.2 + UniWebを試す => 接続には失敗する・・・が、リクエストは通っており、レ スポンスでエラーとなっているらしい 12年10月4日木曜日 77
78.
デモに至るまで・・・
UnityのAssetであるUniWebが、WebSocketをサポー トしたらしい! => Tomcat7.0.27 + Unity3.5.2 + UniWebを試す => 接続には失敗する・・・が、リクエストは通っており、レ スポンスでエラーとなっているらしい Tomcat + UniWebの通信データを解析 => レスポンスの認識違いによるエラーと判明 => 多分Tomcatが悪い・・・が、Tomcatの手直しは難し いので、UniWeb側を修正 12年10月4日木曜日 78
Download