PHP の WebSocket を理解する
WebSocket は、単一の TCP 接続上でリアルタイムの全二重通信チャネルを提供します。クライアントがサーバーにリクエストを送信して応答を待つ HTTP とは異なり、WebSocket を使用すると、複数のリクエストを必要とせずにクライアントとサーバー間の継続的な通信が可能になります。これは、チャット アプリケーション、ライブ通知、オンライン ゲームなど、リアルタイムの更新が必要なアプリケーションに最適です。
このガイドでは、WebSocket、WebSocket の仕組み、PHP での実装方法について説明します。
WebSocket とは何ですか?
WebSocket により、Web ブラウザ (またはその他のクライアント) とサーバー間の対話型通信が可能になります。 WebSocket の重要な側面は次のとおりです:
- 全二重通信: クライアントとサーバーの両方がいつでも相互にメッセージを送信できるため、従来の HTTP ポーリングよりも接続が効率的になります。
- 永続的な接続: WebSocket 接続は、一度確立されると、クライアントまたはサーバーによって明示的に閉じられるまで開いたままになります。
- 低遅延: WebSocket ではリクエストごとに新しい接続を開く必要がなくなるため、遅延が減少し、リアルタイム通信に最適です。
WebSocket の仕組み
- ハンドシェイク: 通信は HTTP リクエストから始まります。クライアントは、接続を HTTP から WebSocket に切り替えるために、Upgrade ヘッダーを含む HTTP リクエストを送信します。
- 接続の確立: サーバーがハンドシェイクを確認すると、接続が確立され、クライアントとサーバーの両方がメッセージの送受信を開始できるようになります。
- メッセージング: データはフレームを通じて送信されます。フレームは軽量で、HTTP ヘッダーのオーバーヘッドなしで送受信できます。
- 接続の終了: クライアントまたはサーバーのいずれかが接続を終了できます。
WebSocket を使用する場合
- リアルタイム アプリケーション: チャット アプリケーション、ライブ通知、共同編集など。
- ゲーム: 頻繁なアップデートが必要なマルチプレイヤー オンライン ゲーム用。
- ライブ フィード: 株価、スポーツのスコア、または IoT デバイスからのリアルタイム データをストリーミングします。
- コラボレーション ツール: 複数のユーザーがリアルタイムで更新を確認する必要がある Google ドキュメントなどのアプリ用。
PHP での WebSocket の実装
PHP で WebSocket を実装するには、WebSocket を使用したリアルタイムの双方向通信用に特別に設計された PHP ライブラリである Ratchet などのライブラリを使用できます。
Ratchet を使用した段階的な WebSocket 実装
ステップ 1: Composer 経由で Ratchet をインストールする
まず、Ratchet ライブラリをインストールする必要があります。 Composer がインストールされていると仮定すると、次のコマンドを実行できます:
composer require cboden/ratchet
ステップ 2: PHP で WebSocket サーバーを作成する
接続とメッセージを処理する単純な WebSocket サーバーを作成しましょう。
- WebSocketServer.php で WebSocket サーバー クラスを作成します:
<?php use Ratchet\MessageComponentInterface; use Ratchet\ConnectionInterface; class WebSocketServer implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new \SplObjectStorage; } // Called when a new client connects public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "New connection: ({$conn->resourceId})\n"; } // Called when a client sends a message public function onMessage(ConnectionInterface $from, $msg) { echo "New message: $msg\n"; foreach ($this->clients as $client) { if ($from !== $client) { // Send the message to everyone except the sender $client->send($msg); } } } // Called when a connection is closed public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Connection closed: ({$conn->resourceId})\n"; } // Called if an error occurs public function onError(ConnectionInterface $conn, \Exception $e) { echo "Error: {$e->getMessage()}\n"; $conn->close(); } }
このクラスは、新しい接続、受信メッセージ、閉じられた接続、エラーを処理するメソッドを定義する Ratchet の MessageComponentInterface を実装します。
ステップ 3: WebSocket サーバーの実行
WebSocket サーバーを起動するための新しい PHP スクリプトを作成します (例: start_server.php)。
<?php require __DIR__ . '/vendor/autoload.php'; use Ratchet\Http\HttpServer; use Ratchet\Server\IoServer; use Ratchet\WebSocket\WsServer; $server = IoServer::factory( new HttpServer( new WsServer( new WebSocketServer() ) ), 8080 // Port number for the WebSocket server ); $server->run();
次のスクリプトを実行してサーバーを起動できます:
php start_server.php
サーバーは ws://localhost:8080 で実行されるようになります。
ステップ 4: WebSocket サーバーに接続するフロントエンドを作成する
次に、jQuery と JavaScript を使用して HTML ファイルを作成し、WebSocket サーバーに接続しましょう。
- HTML ファイルを作成しますindex.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>WebSocket Chat</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <h2>WebSocket Chat</h2> <input type="text" id="message" placeholder="Enter your message"> <button id="send">Send</button> <div id="chat"></div> <script> $(document).ready(function() { var ws = new WebSocket('ws://localhost:8080'); // When receiving a message from the server ws.onmessage = function(event) { $('#chat').append('<p>' + event.data + '</p>'); }; // Sending a message to the server $('#send').click(function() { var msg = $('#message').val(); ws.send(msg); $('#message').val(''); }); }); </script> </body> </html>
このシンプルなインターフェイスを使用すると、メッセージを入力して WebSocket サーバーに送信できます。接続されているすべてのクライアントがメッセージを受信して表示します。
ステップ 5: WebSocket 接続をテストする
- php start_server.php を実行して WebSocket サーバーを起動します。
- ブラウザでindex.htmlを開きます。
- 別のブラウザまたはタブで同じページを開いて、複数のクライアントをシミュレートします。
1 つのクライアントからメッセージを送信すると、接続されているすべてのクライアントのブラウザにメッセージが表示されます。
PHP에서 WebSocket을 사용할 때의 장점
- 실시간 업데이트: WebSocket은 HTTP 폴링의 오버헤드 없이 실시간 업데이트를 제공합니다.
- 낮은 지연 시간: 연결이 계속 열려 있으므로 메시지를 즉시 보낼 수 있어 지연 시간이 줄어듭니다.
- 양방향 통신: 통신이 클라이언트에서 시작되는 기존 HTTP와 달리 서버와 클라이언트 모두 서로에게 동시에 메시지를 보낼 수 있습니다.
PHP의 WebSocket 사용 사례
- 채팅 애플리케이션: WebSocket은 메시지를 모든 사용자에게 즉시 전송해야 하는 실시간 채팅 애플리케이션에 적합합니다.
- 실시간 알림: 실시간 알림(예: 소셜 미디어, 주가)을 푸시해야 하는 앱에 적합합니다.
- 실시간 공동 작업 도구: WebSocket을 사용하면 실시간 문서 편집과 같은 실시간 공동 작업이 가능합니다.
- 온라인 게임: 멀티플레이어 온라인 게임은 WebSocket의 지연 시간이 짧은 통신의 이점을 누릴 수 있습니다.
결론
WebSocket은 클라이언트와 서버 간의 실시간 전이중 통신을 위한 강력한 솔루션을 제공하며 채팅 시스템, 실시간 알림 및 기타 실시간 애플리케이션에 이상적입니다. Ratchet과 같은 라이브러리와 함께 PHP를 사용하면 WebSocket 서버를 쉽게 설정하고 이를 애플리케이션에 통합하여 더 나은 사용자 참여와 응답성을 얻을 수 있습니다.
以上がPHP の WebSocket を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。
