WebSocket
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[HTTP]]
--[[ASP.NET SignalR]]
* 目次 [#w78cf3f7]
#contents
*概要 [#y134ddee]
HTTPを用いて、双方向通信を実現するための[[技術規格>#x0059...
-APIはHTML仕様の中に含まれている~
HTML Standard 9.3 Web sockets
-通信プロトコル標準仕様
--RFC 6455
--Fetch Standard 6. WebSocket protocol alterations
*仕様 [#lc289e3d]
あまり詳しく読んでいないが、ざっくり、HTTP的に接続して、...
-HTML Standard
--https://html.spec.whatwg.org/multipage/web-sockets.html...
--https://triple-underscore.github.io/WebSocket-ja.html
-Fetch Standard
--https://fetch.spec.whatwg.org/#websocket-protocol
--https://triple-underscore.github.io/Fetch-ja.html#webso...
*問題点 [#n3e1f862]
-あまり流行っていない体感もあるので調査をしてみた。
-例えば、大規模なインターネットサイトの多くがWebSocketを...
--TwitterはHTTP/2と[[ポーリング>#d98f75ed]]
--FacebookとGmailは[[ロングポーリング>#d98f75ed]]
-調査結果をサマリすると、
--[[HTTP/2の方が優れている。>#yf5721f1]]
--また、[[HTTP/3がそのプロトコルを統合するかもしれない。>...
>と言う事で、WebSocketが新規採用される可能性は低いという...
**現行の問題 [#sa642fde]
-とびきり不安定なスペックでの波乱の経緯(RFC6455でようや...
-多くのライブラリ(欠陥があるにも関わらず、複数の実装が付...
-古いブラウザではサポートされない。
**技術的な問題 [#f4aec6f9]
***信頼性が高くない。 [#u538e95d]
-WebSocketは、信頼性(TCP/IP)という錯覚を与えた。
-しかし、欠損やサーバで処理される順序の入れ替わりなどが~
起こり得る単なるHTTP呼び出しであるかのように扱う必要があ...
***ブラウザでTCP/IPコネクションが制限されない。 [#f3d2b024]
ブラウザのWebSocket(TCP/IPコネクション)が、~
HTTP/HTTPSコネクションのように制限されない。
***プロキシや[[負荷分散>NLB]]の問題 [#ib829c62]
-HTTPプロキシサーバ経由の問題~
HTTPSでないHTTPプロキシサーバ経由でWebSocketを実行すると、~
WebSocketが閉じてしまったにも関わらず、オープンであるよう...
-TCPプロキシの問題
--TCPプロキシを起動することが余儀なくされるが、問題もある。
--HTTPプロキシによって緩和されるDoS攻撃は、TCPプロキシで...
--TCPプロキシはヘッダを入れたり、URLを書き直したりできな...
また、従来、HTTPプロキシが処理する様々な役割も実行できな...
-[[負荷分散>NLB]]の問題
--既存のトラフィックを再度バランシングする方法が無い。
--オーバーロードしたサーバを終了する以外に無い。
***サーバーに、I/O完了ポートなどが必要 [#r12655ed]
***[[HTTP/2>HTTP/2について調べてみた。]]と統合されていな...
-[[HTTP/2のサーバプッシュ>HTTP/2について調べてみた。#j550...
[[ポーリング>#d98f75ed]]または[[ロングポーリング>#d98f75e...
-WebSocketの実装を洗練していくと、結局HTTPの再発明になる。
-両プロトコルを統一するための(有効期限切れの)ドラフトを...
-HTTP/3が統合するかもしれない。
**エンドユーザの視点 [#pda067ce]
***必要な状況が殆ど無い。 [#f1cc4fdd]
-ミリ秒未満のHTTPヘッダのパースの最適化が必要な状況が殆ど...
-例えば、[[ポーリング>#d98f75ed]]を使って、30秒の遅れにも...
***メッセージングの信頼性の方が重要 [#zce2204f]
-(上限はあるものの)古いメッセージを”取り戻す”ことが必要。
-信頼性のあるメッセージングが実装できれば、[[複数のトラン...
*代替 [#v5e26cae]
[[各種の双方向通信>#g3f9a3df]]がある。
**ポーリング [#d98f75ed]
-通常のポーリング~
ポーリングによる疑似プッシュ方式
-Ajax polling
--ボディがJSON化されたもの。
--[[ポーリング>#d98f75ed]]と同じ疑似プッシュ方式
**Comet [#pe61b401]
-複数の手法をまとめた概念
-Ajax と Long-polling を使用
--Ajax~
JSON化されたボディ。
--Long-polling~
プッシュ時まで、レスポンスを返さない。
**Server Sent Events [#pa8beabb]
-Chunked Transfer Codingを使用して、~
分割(chunked)データ扱いで、継続的にレスポンス可能。
-Chunked Transfer Codingとは、
--大容量のファイルなど、Content-Length を明示しないでレス...
--データを細かく分けて、分割された個々のデータをサイズと...
**Frame [#v1e55e88]
-HTML の framesetやiframeタグを使って常時接続を実現する方法
-Forever Frame
**[[HTTP/2>HTTP/2について調べてみた。]] [#p5fd189f]
[[ポーリング>#d98f75ed]]のトランスポートとして使用すると...
**参考 [#g3f9a3df]
-サーバPUSHざっくりまとめ~
https://www.slideshare.net/mawarimichi/push-37869433
-サーバからクライアントに送信する技術 - WebSocketを中心に...
https://qiita.com/yuba/items/00fc1892b296fb7b8de9
-双方向通信を実現! WebSocketを使いこなそう~
連載:人気順に説明する初めてのHTML5開発 - @IT~
http://www.atmarkit.co.jp/ait/articles/1111/11/news135.html
-リアルタイム通信で利用されるプロトコルと手法 - tech.guit...
http://tech.guitarrapc.com/entry/2015/08/17/044937
-リアルタイムなwebアプリを実現する方法~
(ポーリング、Comet、Server Sent Events、WebSocket) SIerだ...
http://kimulla.hatenablog.com/entry/2016/01/17/%E3%83%AA%...
*参考 [#hd18c8cc]
-WebSocketについて調べてみた。 - Qiita~
https://qiita.com/south37/items/6f92d4268fe676347160
**問題点 [#hb5491fd]
-WebSocketには注意が必要 | プログラミング | POSTD~
http://postd.cc/websockets-caution-required/
**Wikipedia [#d7dbcac1]
-WebSocket~
https://ja.wikipedia.org/wiki/WebSocket
-リアルタイム・ウェブ~
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB...
----
Tags: [[:通信技術]], [[:IIS]], [[:.NET開発]], [[:.NET Cor...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[HTTP]]
--[[ASP.NET SignalR]]
* 目次 [#w78cf3f7]
#contents
*概要 [#y134ddee]
HTTPを用いて、双方向通信を実現するための[[技術規格>#x0059...
-APIはHTML仕様の中に含まれている~
HTML Standard 9.3 Web sockets
-通信プロトコル標準仕様
--RFC 6455
--Fetch Standard 6. WebSocket protocol alterations
*仕様 [#lc289e3d]
あまり詳しく読んでいないが、ざっくり、HTTP的に接続して、...
-HTML Standard
--https://html.spec.whatwg.org/multipage/web-sockets.html...
--https://triple-underscore.github.io/WebSocket-ja.html
-Fetch Standard
--https://fetch.spec.whatwg.org/#websocket-protocol
--https://triple-underscore.github.io/Fetch-ja.html#webso...
*問題点 [#n3e1f862]
-あまり流行っていない体感もあるので調査をしてみた。
-例えば、大規模なインターネットサイトの多くがWebSocketを...
--TwitterはHTTP/2と[[ポーリング>#d98f75ed]]
--FacebookとGmailは[[ロングポーリング>#d98f75ed]]
-調査結果をサマリすると、
--[[HTTP/2の方が優れている。>#yf5721f1]]
--また、[[HTTP/3がそのプロトコルを統合するかもしれない。>...
>と言う事で、WebSocketが新規採用される可能性は低いという...
**現行の問題 [#sa642fde]
-とびきり不安定なスペックでの波乱の経緯(RFC6455でようや...
-多くのライブラリ(欠陥があるにも関わらず、複数の実装が付...
-古いブラウザではサポートされない。
**技術的な問題 [#f4aec6f9]
***信頼性が高くない。 [#u538e95d]
-WebSocketは、信頼性(TCP/IP)という錯覚を与えた。
-しかし、欠損やサーバで処理される順序の入れ替わりなどが~
起こり得る単なるHTTP呼び出しであるかのように扱う必要があ...
***ブラウザでTCP/IPコネクションが制限されない。 [#f3d2b024]
ブラウザのWebSocket(TCP/IPコネクション)が、~
HTTP/HTTPSコネクションのように制限されない。
***プロキシや[[負荷分散>NLB]]の問題 [#ib829c62]
-HTTPプロキシサーバ経由の問題~
HTTPSでないHTTPプロキシサーバ経由でWebSocketを実行すると、~
WebSocketが閉じてしまったにも関わらず、オープンであるよう...
-TCPプロキシの問題
--TCPプロキシを起動することが余儀なくされるが、問題もある。
--HTTPプロキシによって緩和されるDoS攻撃は、TCPプロキシで...
--TCPプロキシはヘッダを入れたり、URLを書き直したりできな...
また、従来、HTTPプロキシが処理する様々な役割も実行できな...
-[[負荷分散>NLB]]の問題
--既存のトラフィックを再度バランシングする方法が無い。
--オーバーロードしたサーバを終了する以外に無い。
***サーバーに、I/O完了ポートなどが必要 [#r12655ed]
***[[HTTP/2>HTTP/2について調べてみた。]]と統合されていな...
-[[HTTP/2のサーバプッシュ>HTTP/2について調べてみた。#j550...
[[ポーリング>#d98f75ed]]または[[ロングポーリング>#d98f75e...
-WebSocketの実装を洗練していくと、結局HTTPの再発明になる。
-両プロトコルを統一するための(有効期限切れの)ドラフトを...
-HTTP/3が統合するかもしれない。
**エンドユーザの視点 [#pda067ce]
***必要な状況が殆ど無い。 [#f1cc4fdd]
-ミリ秒未満のHTTPヘッダのパースの最適化が必要な状況が殆ど...
-例えば、[[ポーリング>#d98f75ed]]を使って、30秒の遅れにも...
***メッセージングの信頼性の方が重要 [#zce2204f]
-(上限はあるものの)古いメッセージを”取り戻す”ことが必要。
-信頼性のあるメッセージングが実装できれば、[[複数のトラン...
*代替 [#v5e26cae]
[[各種の双方向通信>#g3f9a3df]]がある。
**ポーリング [#d98f75ed]
-通常のポーリング~
ポーリングによる疑似プッシュ方式
-Ajax polling
--ボディがJSON化されたもの。
--[[ポーリング>#d98f75ed]]と同じ疑似プッシュ方式
**Comet [#pe61b401]
-複数の手法をまとめた概念
-Ajax と Long-polling を使用
--Ajax~
JSON化されたボディ。
--Long-polling~
プッシュ時まで、レスポンスを返さない。
**Server Sent Events [#pa8beabb]
-Chunked Transfer Codingを使用して、~
分割(chunked)データ扱いで、継続的にレスポンス可能。
-Chunked Transfer Codingとは、
--大容量のファイルなど、Content-Length を明示しないでレス...
--データを細かく分けて、分割された個々のデータをサイズと...
**Frame [#v1e55e88]
-HTML の framesetやiframeタグを使って常時接続を実現する方法
-Forever Frame
**[[HTTP/2>HTTP/2について調べてみた。]] [#p5fd189f]
[[ポーリング>#d98f75ed]]のトランスポートとして使用すると...
**参考 [#g3f9a3df]
-サーバPUSHざっくりまとめ~
https://www.slideshare.net/mawarimichi/push-37869433
-サーバからクライアントに送信する技術 - WebSocketを中心に...
https://qiita.com/yuba/items/00fc1892b296fb7b8de9
-双方向通信を実現! WebSocketを使いこなそう~
連載:人気順に説明する初めてのHTML5開発 - @IT~
http://www.atmarkit.co.jp/ait/articles/1111/11/news135.html
-リアルタイム通信で利用されるプロトコルと手法 - tech.guit...
http://tech.guitarrapc.com/entry/2015/08/17/044937
-リアルタイムなwebアプリを実現する方法~
(ポーリング、Comet、Server Sent Events、WebSocket) SIerだ...
http://kimulla.hatenablog.com/entry/2016/01/17/%E3%83%AA%...
*参考 [#hd18c8cc]
-WebSocketについて調べてみた。 - Qiita~
https://qiita.com/south37/items/6f92d4268fe676347160
**問題点 [#hb5491fd]
-WebSocketには注意が必要 | プログラミング | POSTD~
http://postd.cc/websockets-caution-required/
**Wikipedia [#d7dbcac1]
-WebSocket~
https://ja.wikipedia.org/wiki/WebSocket
-リアルタイム・ウェブ~
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB...
----
Tags: [[:通信技術]], [[:IIS]], [[:.NET開発]], [[:.NET Cor...
ページ名: