この記事の例では、WebSocket に基づいて PHP で単純なチャット ルームを構築する実践について説明します。皆さんの参考に共有してください。詳細は以下の通りです
1. はじめに
会社のゲームに簡易チャットルームがあることを知り、node+websocketで作られていることに気づき、PHPを使って簡易チャットルームを作ってみようと思いました。そこで、さまざまな情報を収集し、ドキュメントを読み、事例を探し、簡単なチャット ルームを自分で書きました。
http 接続は、短い接続と長い接続に分けられます。短い接続は通常、ajax を使用して実装でき、長い接続は WebSocket です。短い接続は実装が比較的簡単ですが、消費するリソースが多すぎます。 Websocket は効率的ですが、互換性に関していくつかの問題があります。 websocketはhtml5のリソースです
2. フロントエンド
フロントエンドでの WebSocket の実装は非常にシンプルで簡単です
3.舞台裏
WebSocket の難しさは主にバックグラウンドにあります
3.1WebSocket接続プロセス
Websocket 通信図 これは、クライアントとサーバー間の単純な通信図です。PHP が行う主な処理は、暗号化キーを受け取り、それを返してソケットの作成とハンドシェイク操作を完了することです。
下の図はサーバー側のWebSocket処理の詳細なフローチャートです
3.2 コードの練習
リーリー
リーリー
リーリー
5. クライアントデータを解析します (ここでは暗号化していません。必要に応じて自分で暗号化できます)
6. ソケットをバッファに書き込みます
7.操作方法
①server.phpはコンソールで実行するのがベストです
server.php スクリプト ディレクトリに移動します (最初に php -v を実行して、php が設定されているかどうかを確認できます。Linux 設定がない場合は、bash ウィンドウでパスを設定します)
php -f サーバー.php
エラーがある場合はプロンプトが表示されます
②サーバー経由でHTMLファイルにアクセス
8. 落とし穴を踏んでしまった場合は、デバッグ作業を開いてエラーを簡単に確認してください
①server.phpは、中断されたプロセスで出力を印刷できます。問題がある場合は、コードに印刷を追加してデバッグできます
各判断をマークして、コードがどのセクションで実行されているかをコンソールで確認できます
ただし、コードを変更するたびにスクリプト php server.php を再実行する必要があります
②このエラーが発生する場合は
の可能性があります1. サーバーとのソケットの初期化時にデータを送信します (サーバーとの最初の検証ハンドシェイク中にコンテンツは送信できません)
2. この状況は、検証されたがクライアントが送信しなかった場合、または送信されたメッセージが空だった場合にも発生します
接続されているソケットのデータを確認してください
③ブラウザがサポートしていないか、サーバーがソケットを開いていない可能性がありますので、開始する前に確認することをお勧めします。
リーリー
以上がこの記事の全内容です。皆様の学習に役立つことを願っております。また、皆様も Script Home をサポートしていただければ幸いです。