
PHP WebSocket 開発例: 特定の機能を実装する方法の実際的なケース
はじめに:
インターネットの発展に伴い、従来の HTTP プロトコルが実際に存在します。・時間通信 一部制限あり。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルであり、クライアントとサーバー間のリアルタイム通信を実現します。この記事では、PHP WebSocket を使用して特定の機能を実装する方法を実際の事例を使って紹介します。
- はじめに
WebSocket は、クライアントとサーバーの間に長い接続を確立し、双方向のリアルタイム通信を可能にするプロトコルです。従来の HTTP リクエスト/レスポンス モデルとは異なり、WebSocket 接続はクライアントとサーバーの間に永続的な通信チャネルを確立し、サーバーがアクティブにデータをクライアントにプッシュできるようにします。
- 実践例: オンライン チャット ルーム
オンライン チャット ルームは、WebSocket の最も一般的なアプリケーションの 1 つです。ユーザーはブラウザを通じてチャット ルーム ページにアクセスし、他のオンライン ユーザーとリアルタイムで通信できます。以下では、実践的なケースを使用して、PHP WebSocket を使用して簡単なオンライン チャット ルームを実装する方法を紹介します。
(1) WebSocket サーバーの構築
まず、WebSocket サーバーを構築する必要があります。 PHP の swoole 拡張機能を使用して WebSocket サーバーを構築できます。 Swoole は、WebSocket のサポートを提供する高性能 PHP 拡張機能です。次のコードを実行すると、WebSocket サーバーを作成できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php
$server = new swoole_websocket_server( "0.0.0.0" , 9501);
$server ->on( 'open' , function ( $server , $request ) {
echo "new connection open: " . $request ->fd;
});
$server ->on( 'message' , function ( $server , $frame ) {
echo "received message: " . $frame ->data;
});
$server ->on( 'close' , function ( $ser , $fd ) {
echo "connection close: " . $fd ;
});
$server ->start();
?>
|
ログイン後にコピー
このコードでは、リスニング IP アドレス 0.0.0.0 とポート番号 9501 を持つ WebSocket サーバーを作成します。新しい接続が確立されると、サーバーは自動的に open
イベント処理関数を呼び出します。クライアントからメッセージを受信すると、サーバーは message
イベント処理関数を呼び出します。接続が閉じられると、サーバーは close
イベント処理関数を呼び出します。
(2) フロントエンド ページの開発
次に、チャット ルーム インターフェイスを表示し、サーバーと通信するためのフロントエンド ページを開発する必要があります。以下は、単純なフロントエンド ページ コードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <!DOCTYPE html>
<html>
<head>
<title>WebSocket Chat Room</title>
<script>
var socket = new WebSocket( "ws://localhost:9501" );
socket.onopen = function (event) {
console.log( "WebSocket connection open" );
};
socket.onmessage = function (event) {
console.log( "Received message: " + event.data);
};
socket.onclose = function (event) {
console.log( "WebSocket connection closed" );
};
</script>
</head>
<body>
<h1>WebSocket Chat Room</h1>
<div id= "chat-messages" ></div>
<input type= "text" id= "input-message" >
<button onclick= "sendMessage()" >Send</button>
<script>
function sendMessage() {
var message = document.getElementById( "input-message" ).value;
socket.send(message);
}
</script>
</body>
</html>
|
ログイン後にコピー
このコードは、WebSocket を通じてサーバーに接続し、接続の開始、メッセージの受信、および接続の終了のための処理関数を定義します。ユーザーはボタンとテキスト ボックスを使用してチャット コンテンツを入力し、サーバーに送信できます。
(3) チャット ルーム機能の実装
サーバー側では、チャット ルーム機能を実装するためのロジックを追加する必要があります。サーバー コードを次のように変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php
$server = new swoole_websocket_server( "0.0.0.0" , 9501);
$server ->on( 'open' , function ( $server , $request ) {
echo "new connection open: " . $request ->fd."
";
});
$server ->on( 'message' , function ( $server , $frame ) {
echo "received message: " . $frame ->data."
";
foreach ( $server ->connections as $fd ) {
$server ->push( $fd , $frame ->data);
}
});
$server ->on( 'close' , function ( $ser , $fd ) {
echo "connection close: " . $fd ."
";
});
$server ->start();
?>
|
ログイン後にコピー
変更されたコードでは、サーバーはクライアントからメッセージを受信すると、接続されているすべてのクライアントにメッセージをブロードキャストします。このようにして、チャット ルーム ページでユーザーが送信したすべてのメッセージが他のユーザーのページにリアルタイムで表示されます。
概要:
上記の実践的なケースを通じて、PHP WebSocket を使用して簡単なオンライン チャット ルームを実装する方法を学びました。 PHP の swoole 拡張機能を利用すると、WebSocket ベースのサーバーを簡単に構築して、リアルタイム通信機能を実現できます。さらに、WebSocket は、リアルタイムのデータ表示、複数人での共同編集など、より多くのシナリオで使用できます。この記事が PHP WebSocket の理解と応用に役立つことを願っています。
以上がPHP WebSocket開発例:具体的な機能を実装する実践例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。