このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
ratchet:0.4:tutorial [2020/11/16 17:10] y2sunlight [ロジックの実装] |
ratchet:0.4:tutorial [2020/11/30 22:19] (現在) y2sunlight [Ratchet チュートリアル] |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | > 編集中 | ||
| - | |||
| ====== Ratchet チュートリアル ====== | ====== Ratchet チュートリアル ====== | ||
| Version 0.4.3 | Version 0.4.3 | ||
| 行 11: | 行 9: | ||
| 関連記事 | 関連記事 | ||
| * Ratchet チュートリアル | * Ratchet チュートリアル | ||
| - | * [[Ratchet: | + | * [[Ratchet: |
| リンク | リンク | ||
| 行 164: | 行 162: | ||
| > [[https:// | > [[https:// | ||
| - | [{Project-Folder}/ | + | {{fa> |
| - | <code php> | + | < |
| <?php | <?php | ||
| namespace MyApp; | namespace MyApp; | ||
| 行 213: | 行 211: | ||
| </ | </ | ||
| - | * onOpen | + | |
| - | * onMessage - TODO: 説明... | + | |
| - | * onClose | + | * onMessage --- 送信者以外の全ての端末に、着信メッセージを送信します |
| - | * onError | + | * onClose |
| + | * onError | ||
| + | |||
| + | 非常にシンプルなロジックですが、Ratchet の '' | ||
| \\ | \\ | ||
| ===== チャットアプリの実行 ===== | ===== チャットアプリの実行 ===== | ||
| + | |||
| アプリケーションが完成したので、実行してみましょう。 | アプリケーションが完成したので、実行してみましょう。 | ||
| - | まず、コマンドプロンプトからチャットサーバ(chat-server.php) を起動します。 | + | まず、コマンドプロンプトでチャットサーバ ('' |
| < | < | ||
| 行 230: | 行 232: | ||
| 別のコマンドプロンプトから以下のようにTelnetを起動します。 | 別のコマンドプロンプトから以下のようにTelnetを起動します。 | ||
| + | |||
| + | > Telnet が有効になっていない場合は、[[http:// | ||
| < | < | ||
| 行 235: | 行 239: | ||
| </ | </ | ||
| - | この時チャットサーバから以下が出力されます。 | + | この時、チャットサーバから以下のメッセージが出力されます。 |
| < | < | ||
| New connection! (37) | New connection! (37) | ||
| </ | </ | ||
| - | さらに、別のコマンドプロンプトから以下のようにTelnetを起動します。 | + | さらに、別のコマンドプロンプトからもTelnetを起動します。 |
| < | < | ||
| 行 246: | 行 251: | ||
| </ | </ | ||
| - | この時チャットサーバから以下が出力されます。 | + | 上と同じように、チャットサーバから2番目のメッセージが出力されます。 |
| < | < | ||
| New connection! (37) | New connection! (37) | ||
| 行 252: | 行 258: | ||
| </ | </ | ||
| + | Telnetを起動した一方のコマンドプロンプトから、メッセージ('' | ||
| - | Telnetを起動したコマンドプロンプトから、メッセージ( "Hello World!" | + | ここまではTCPレベルのアプローチです。主な機能は MessageComponentInterface に集約されており、イベントハンドリングが主体で、WebSocketAPI はまだ機能していません。 |
| - | 他のウィンドウに表示されます。 | + | |
| - | ctrl+] でコマンドモードに移行し、quitで終了できます。 | + | |
| - | + | ||
| - | ここまではTCPレベルのアプローチです。主な機能はMessageComponentInterfaceに集約されており、 | + | |
| - | イベントハンドリングが主体で、WebSocketAPIはまだ機能していません。 | + | |
| \\ | \\ | ||
| ===== WebSocketへの対応 ===== | ===== WebSocketへの対応 ===== | ||
| - | 基本的なチャットアプリケーションが機能するようになったので、 | ||
| - | それをWebブラウザでそれが機能するようにチャットサーバを変更します。 | ||
| - | [{Project-Folder}/ | + | 基本的なチャットアプリケーションが機能するようになったので、今度はWebブラウザでそれが機能するようにチャットサーバを変更します。 |
| + | |||
| + | {{fa> | ||
| <code php chat-server-ws.php> | <code php chat-server-ws.php> | ||
| <?php | <?php | ||
| 行 286: | 行 288: | ||
| </ | </ | ||
| - | WsServerを使用すると[[https:// | + | [[http:// |
| - | HttpServerは、着信HTTPリクエストの解析を担当します。このクラスの目的は、完全なHTTPヘッダー要求を受信して渡すまでデータをバッファリングすることで、 | + | WebSocket リクエストをアップグレードするためのものです。 |
| - | WebSocketリクエストをアップグレードするためのものです。 | + | |
| + | このチャットをテストするために、次のファイルを作ります。(HTMLファイルでも問題ありません) | ||
| - | このサーバをテストするために、次のファイルを作ります。(HTMLファイルでも問題ありません) | + | {{fa> |
| - | + | ||
| - | [{Project-Folder}/ | + | |
| <code html client-ws.html> | <code html client-ws.html> | ||
| <script type=" | <script type=" | ||
| 行 308: | 行 308: | ||
| - | コマンドプロンプトでチャットサーバ(chat-server-ws.php)を実行します。 | + | コマンドプロンプトでチャットサーバ('' |
| < | < | ||
| 行 314: | 行 314: | ||
| </ | </ | ||
| - | 2つのブラウザウィンドウを開いて、test-ws.php にアクセスします。 | + | 次に、2つのブラウザウィンドウを開いて |
| - | そして、ブラウザの開発ツールを開きデバックコンソールへの次のメッセージを確認して下さい。 | + | |
| < | < | ||
| 行 321: | 行 320: | ||
| </ | </ | ||
| - | このメッセージが出ていたら、一方のデバックコンソールから次のコードを実行します: | + | このメッセージが出ていたら、一方のブラウザのデバックコンソールから次のコードを実行します: |
| < | < | ||
| - | conn.send(こんにちは'); | + | conn.send('Hello World!'); |
| </ | </ | ||
| この時、他方のデバックコンソールに "Hello World!" | この時、他方のデバックコンソールに "Hello World!" | ||
| + | |||
| + | これで Ratchet のチュートリアル「Hello World!」を終わります。 | ||
| + | |||
| \\ | \\ | ||