ホームページ  >  記事  >  バックエンド開発  >  PHPとSignalRを使用したリアルタイムデータ通信

PHPとSignalRを使用したリアルタイムデータ通信

王林
王林オリジナル
2023-06-28 09:08:221366ブラウズ

モバイル インターネットの急速な発展に伴い、リアルタイム通信は徐々に非常に重要な要件になってきました。リアルタイム通信の最も基本的な要件はリアルタイム データ通信です。これには、サーバーがクライアントにリアルタイムでデータを送信し、リアルタイムで対話できる必要があります。

リアルタイム データ通信を実装する場合、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 ライブラリをインストールできます。具体的な手順は次のとおりです:

  1. Composer のインストール

まず、Composer をインストールする必要があります。 Composer は、次のコマンドを使用してコマンド ラインからインストールできます:

curl -sS https://getcomposer.org/installer | php

  1. SignalR の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。