モバイル インターネットの急速な発展に伴い、リアルタイム通信は徐々に非常に重要な要件になってきました。リアルタイム通信の最も基本的な要件はリアルタイム データ通信です。これには、サーバーがクライアントにリアルタイムでデータを送信し、リアルタイムで対話できる必要があります。
リアルタイム データ通信を実装する場合、PHP と SignalR は 2 つの非常に強力なツールです。 PHP はサーバー側コードの作成に使用できる非常に人気のある開発言語であり、SignalR はリアルタイム データ通信の実装に使用できるリアルタイム通信フレームワークです。
今回は、PHPとSignalRを使ってリアルタイムデータ通信を実現する方法を詳しく紹介します。最初に SignalR の基本概念と動作原理を紹介し、次に PHP と SignalR を使用してリアルタイム データ通信用のサーバーとクライアントを構築する方法を紹介します。最後に、例を使用して、PHP と SignalR を使用してリアルタイム データ通信を実現する方法を示します。
1. SignalR の基本概念と動作原理
SignalR は、リアルタイム データ通信を実現するために使用できるリアルタイム通信フレームワークです。 WebSocket、ロングポーリング、Server-Sent Events (SSE) などのテクノロジーに基づいており、さまざまなブラウザーやオペレーティング システム上でリアルタイムのデータ通信を実行できます。
SignalR の動作原理は非常にシンプルです。クライアントがサーバーとの接続を確立すると、SignalR は最適な通信方法 (WebSocket、ロング ポーリング、SSE など) を自動的に選択し、サーバーとクライアントの間に永続的な接続を確立します。サーバーにクライアントにプッシュする必要がある新しいデータがある場合、SignalR は自動的にデータをクライアントに送信し、クライアントで対応するイベントをトリガーして、クライアントがデータを処理できるようにします。
2. PHP と SignalR を使用してリアルタイム データ通信用のサーバーとクライアントを構築する
PHP と SignalR を使用してリアルタイム データ通信用のサーバーとクライアントを構築するには、以下が必要ですSignalR の最初の PHP ライブラリをインストールします。 Composer を使用して SignalR の PHP ライブラリをインストールできます。具体的な手順は次のとおりです:
まず、Composer をインストールする必要があります。 Composer は、次のコマンドを使用してコマンド ラインからインストールできます:
curl -sS https://getcomposer.org/installer | php
次のコマンドを使用して、コマンド ラインで SignalR PHP ライブラリをインストールします:
composer require signalwire/signalwire
SignalR PHP ライブラリをインストールした後、サーバーの作成を開始できます。そしてクライアントコード。
サーバー側のコードは次のとおりです:
<?php require __DIR__ . '/vendor/autoload.php'; use SignalWireRestClient; use SignalWireRelayStreamRoom; $client = new Client('YOUR_PROJECT_ID', 'YOUR_AUTH_TOKEN'); $room = new Room($client, 'YOUR_ROOM_ID'); $room->on('data', function ($data) use ($room) { // 处理接收到的数据 }); $room->join();
上記のコードでは、まず SignalR の PHP ライブラリを使用してサーバー側でクライアント インスタンスを作成します。次に、クライアントインスタンスに「データ」イベントを処理するコールバック関数を登録し、クライアントがサーバーから送信されたデータを受信すると、自動的にコールバック関数が呼び出されます。最後に、join() メソッドを呼び出してクライアントを SignalR ルームに参加させます。
クライアント コードは次のとおりです:
<!doctype html> <html> <head> <title>SignalR Example</title> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@signalwire/js@0.14.2/dist/signalwire.min.js"></script> </head> <body> <script> const signalwire = new window.SignalWire.WebSocketEngine({ host: 'relay.signalwire.com', project: 'YOUR_PROJECT_ID', token: 'YOUR_AUTH_TOKEN', room: 'YOUR_ROOM_ID', }); signalwire.on('ready', () => { // 客户端连接成功后的处理 }); signalwire.on('open', () => { // 客户端打开连接后的处理 }); signalwire.on('data', (data) => { // 处理接收到的数据 }); </script> </body> </html>
上記のコードでは、まず SignalR の JavaScript ライブラリを通じてクライアント側で WebSocketEngine インスタンスを作成します。次に、さまざまなイベントを処理するために、WebSocketEngine インスタンスにいくつかのイベント コールバック関数を登録しました。最後に、WebSocketEngine インスタンスを通じてサーバーにデータを送信できます。
3. デモの例
PHP と SignalR を使用してリアルタイム データ通信を実現する方法を示すために、チャット ルームを例に挙げます。このチャット ルームでは、ユーザーがクライアントにテキスト メッセージを入力すると、サーバーがこれらのメッセージを他のクライアントにリアルタイムでプッシュして、リアルタイムの対話を実現します。
特定のコード実装については、次の例を参照してください:
// server.php <?php require __DIR__ . '/vendor/autoload.php'; use SignalWireRestClient; use SignalWireRelayStreamRoom; $client = new Client('YOUR_PROJECT_ID', 'YOUR_AUTH_TOKEN'); $room = new Room($client, 'YOUR_ROOM_ID'); $room->on('data', function ($data) use ($room) { foreach ($room->clients as $client) { $client->send($data); } }); $room->join();
<!-- index.html --> <!doctype html> <html> <head> <title>SignalR Example</title> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@signalwire/js@0.14.2/dist/signalwire.min.js"></script> </head> <body> <div> <input type="text" id="input" /> <button id="send">Send</button> </div> <div id="messages"></div> <script> const signalwire = new window.SignalWire.WebSocketEngine({ host: 'relay.signalwire.com', project: 'YOUR_PROJECT_ID', token: 'YOUR_AUTH_TOKEN', room: 'YOUR_ROOM_ID', }); signalwire.on('ready', () => { console.log('Connected to the server.'); }); signalwire.on('open', () => { console.log('Connection opened.'); }); signalwire.on('data', (data) => { $('#messages').append('<p>' + data + '</p>'); }); $('#send').on('click', () => { const message = $('#input').val(); signalwire.send(message); $('#input').val(''); }); </script> </body> </html>
上記のコードでは、最初にサーバー上に SignalR ルームを作成します。クライアントがサーバーに接続すると、この部屋に参加してください。いずれかのクライアントがメッセージを送信すると、サーバーはこのメッセージを他のクライアントに送信して、リアルタイム通信を実現します。
クライアントでは、テキスト入力ボックスと「送信」ボタンを作成し、ユーザーがテキスト入力ボックスにテキストを入力して「送信」ボタンをクリックすると、テキストがサーバーに送信されます。その後、サーバーはこのテキストを他のクライアントに送信して、リアルタイム通信を実現します。
概要
PHP と SignalR を使用してリアルタイム データ通信を実現するのは非常に簡単で、SignalR の PHP ライブラリと JavaScript ライブラリを使用するだけです。リアルタイム データ通信を実装する場合、SignalR のルームを介してクライアント間の接続を実現し、SignalR のイベントとコールバック関数を使用してサーバーとクライアント間の対話を処理できます。
以上がPHPとSignalRを使用したリアルタイムデータ通信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。