Spring WebSocket
卒業プロジェクトでは、スプリングを使ったWebソケットを使い、何日もレポートを探しましたが、理解できるようですが、理解できませんでした.
MVCもよく理解できなかったのに、Webソケットだったなんて...それも頭突きで片付けましょう
WebSocketとは?
MVCもよく理解できなかったのに、Webソケットだったなんて...それも頭突きで片付けましょう
WebSocketとは?
Webソケットとは、TCP接続のための全二重通信チャネル(双方向通信チャネル)を提供するコンピュータ通信プロトコルである.
RFC 6455リストに定義されたプロトコルWeb Socketは、サーバとブラウザとの間で接続を維持しながらデータを交換することを可能にする.この場合、データは「パケット」の形で伝達され、伝送は双方向であり、接続と追加のHTTP要求を中断する必要はない.
これらの特徴により、Webソケットは、オンラインゲームや株式取引システムなどのデータ交換を継続する必要があるサービスに非常に適している.
せつぞくこうぞう
では、Webソケット接続の仕組みを見てみましょう.
HTTP通信で握手し,プロトコルをWSに変換し,Webソケットフレームを介してデータを転送する.全二重通信チャネルが使用されるため、要求と応答は区別されない.終了時にclose handshake終了が送信されます.
クライアントのリクエストとサーバの応答を見てみましょう.
クライアント要求
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
これにより、HTTPの使用方法をWebSocketに変更したコンテンツをConnectionとUpgradeで送信します.
サーバは、Sec-WebSocket-Protocol
のプロトコルを選択して使用する.
サーバレスポンス
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
次の通信からWebソケットで通信できるようになりました.チャットプロトコルが選択されていることがわかります.
Webソケットはブラウザのサポートが必要ですが、サポートされていないブラウザもあります.Webソケット通信を使用するように、sockJS
を使用してこれらのブラウザをサポートします.
SockJS
WebSocket APIを使用するアプリケーションでは、ブラウザがWebSocketをサポートしない場合があります.
このとき、実行時にWebSocketをHTTPベースの他の技術(例えばHTTP Streaming
またはLong-Polling
)に変換し、再接続を試みるWebSocketシミュレーションがSockJSである.
これらを先に知っておけばいいので、詳しい内容は正式な書類を参考にすると役に立つはずです.
STOMP
STOMPは、単純なテキスト向けのメッセージプロトコルの略であり、双方向ネットワークプロトコルに基づいている.Webソケットは、2種類のメッセージを定義しますが、その内容は定義されていません.STOMPプロトコルは、このWebソケットの上で実行されるプロトコルであり、クライアントとサーバが送信するメッセージのタイプ、フォーマット、コンテンツを定義するメカニズムです.
メッセージ・ヘッダの値に基づいて認証処理を実現するために、メッセージ・ヘッダに値を指定できます.定義されたルールを遵守する場合、複数の言語とプラットフォームにわたってメッセージ相互運用を行うことができます.
さらに、重要な点は、Publisher-Subscribe
機構を提供することである.デフォルトでは、スプリングアプリケーションはSTOMP Brokerを使用し、RabbitMQ
またはActiveMQ
などの外部メッセージングシステムをBrokerとしてサポートします.
この場合,外部エージェントはスプリングとクライアントとの間の媒介として,スプリングとエージェントはTCP接続を保持する.
スプリングによってエージェントにメッセージを渡し、エージェントによってクライアントにメッセージを渡す構造.Springは、上記の構成により、HTTPベースのセキュリティ設定や汎用検証などを適用することができる.
STOMP実装体に文字列構文に従って直接意味を付与させるために,設計情報は明確に定義されていない.しかし、一般的には、/topic
文字列の先頭のフレーズは1対1のpub/subを表し、/queue
文字列の先頭のフレーズは1対1のメッセージ交換を表す.
今になってやっと少し分かった.
サンプルコードでもう一度分析します.
Reference
開発したキバノロ
高勝彬
ブログ
Spring Docs
Reference
この問題について(Spring WebSocket), 我々は、より多くの情報をここで見つけました
https://velog.io/@sossont/Spring-WebSocket
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
WebSocket APIを使用するアプリケーションでは、ブラウザがWebSocketをサポートしない場合があります.
このとき、実行時にWebSocketをHTTPベースの他の技術(例えば
HTTP Streaming
またはLong-Polling
)に変換し、再接続を試みるWebSocketシミュレーションがSockJSである.これらを先に知っておけばいいので、詳しい内容は正式な書類を参考にすると役に立つはずです.
STOMP
STOMPは、単純なテキスト向けのメッセージプロトコルの略であり、双方向ネットワークプロトコルに基づいている.Webソケットは、2種類のメッセージを定義しますが、その内容は定義されていません.STOMPプロトコルは、このWebソケットの上で実行されるプロトコルであり、クライアントとサーバが送信するメッセージのタイプ、フォーマット、コンテンツを定義するメカニズムです.
メッセージ・ヘッダの値に基づいて認証処理を実現するために、メッセージ・ヘッダに値を指定できます.定義されたルールを遵守する場合、複数の言語とプラットフォームにわたってメッセージ相互運用を行うことができます.
さらに、重要な点は、Publisher-Subscribe
機構を提供することである.デフォルトでは、スプリングアプリケーションはSTOMP Brokerを使用し、RabbitMQ
またはActiveMQ
などの外部メッセージングシステムをBrokerとしてサポートします.
この場合,外部エージェントはスプリングとクライアントとの間の媒介として,スプリングとエージェントはTCP接続を保持する.
スプリングによってエージェントにメッセージを渡し、エージェントによってクライアントにメッセージを渡す構造.Springは、上記の構成により、HTTPベースのセキュリティ設定や汎用検証などを適用することができる.
STOMP実装体に文字列構文に従って直接意味を付与させるために,設計情報は明確に定義されていない.しかし、一般的には、/topic
文字列の先頭のフレーズは1対1のpub/subを表し、/queue
文字列の先頭のフレーズは1対1のメッセージ交換を表す.
今になってやっと少し分かった.
サンプルコードでもう一度分析します.
Reference
開発したキバノロ
高勝彬
ブログ
Spring Docs
Reference
この問題について(Spring WebSocket), 我々は、より多くの情報をここで見つけました
https://velog.io/@sossont/Spring-WebSocket
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
開発したキバノロ
高勝彬
ブログ
Spring Docs
Reference
この問題について(Spring WebSocket), 我々は、より多くの情報をここで見つけました https://velog.io/@sossont/Spring-WebSocketテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol