現在の位置: ホーム> 最新記事一覧> PHP リアルタイム通信チュートリアル: WebSocket を使用して効率的な双方向通信を実現する

PHP リアルタイム通信チュートリアル: WebSocket を使用して効率的な双方向通信を実現する

M66 2025-10-28

PHP リアルタイム通信と WebSocket の概要

最新のインターネット アプリケーションでは、リアルタイム通信が中心的な要件の 1 つになっています。リアルタイム チャット、共同編集、マルチプレイヤー ゲーム、オンライン カスタマー サービスのいずれにおいても、高速データ転送機能が必要です。従来のポーリングまたはロングポーリング方法には、待ち時間が長い、リソースが無駄になるなどの問題が発生することがよくあります。 WebSocket プロトコルの出現は、リアルタイム通信に革命的な変化をもたらしました。

WebSocket の基本概念

WebSocket は、単一の TCP 接続での全二重通信のためのプロトコルです。これにより、クライアントとサーバーは長時間の接続を維持し、リアルタイムのデータ交換を実現できます。 WebSocket は従来の HTTP に比べて通信遅延が少なく、データ送信効率が高いため、即時応答が必要なアプリケーションのシナリオに非常に適しています。

WebSocket の仕組み

WebSocket が接続を確立すると、まず HTTP プロトコルを通じてハンドシェイクが実行されます。ハンドシェイクが成功すると、クライアントとサーバー間の接続は維持され、繰り返しのリクエストは必要なくなります。その後、双方がいつでも接続を通じてデータを送受信できるようになり、リアルタイムのパフォーマンスと効率が向上します。

WebSocket はメッセージの送信にデータ フレーム (Frame) を使用します。各フレームには必要な識別情報とデータ内容が含まれており、軽量な構造を維持しながら効率的な通信を可能にします。

PHP での WebSocket サーバーの実装

PHP の Socket 拡張機能を使用すると、WebSocket サーバーをすばやく実装できます。次の例は、基本的な実装を示しています。

<?php
$host = 'localhost'; // サーバーアドレス
$port = 8888;        // リスニングポート

// 作成するSocket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// アドレスとポートをバインドする
socket_bind($socket, $host, $port);

// 接続のリスニングを開始する
socket_listen($socket);

echo "Server running at {$host}:{$port}\n";

// クライアントが接続するのを待ちます
$client = socket_accept($socket);

// クライアントメッセージを受信する
$message = socket_read($client, 1024);

echo "Received message: {$message}\n";

// クライアントに応答を送信する
$response = "Hello, this is the server response!";
socket_write($client, $response, strlen($response));

// 近い接続
socket_close($client);
socket_close($socket);
?>

上記のコードは、指定されたアドレスとポートでクライアント要求をリッスンする単純な WebSocket サーバーを実装しています。クライアントが正常に接続すると、サーバーはメッセージを受信して​​処理し、結果を返すことができるため、リアルタイム通信が実現します。

要約する

WebSocket は、PHP 開発者にリアルタイム通信システムを構築する効率的な方法を提供します。プロトコルの仕組みを理解し、基本的な実装方法をマスターすることで、高性能なリアルタイムアプリケーションを簡単に作成できます。オンライン チャット ルーム、ゲーム システム、共同プラットフォームのいずれであっても、WebSocket はユーザー エクスペリエンスとシステムの応答速度を大幅に向上させることができます。