ホームページ >バックエンド開発 >PHPチュートリアル >リアルタイム翻訳機能を実装するためのPHP Websocket開発ガイド

リアルタイム翻訳機能を実装するためのPHP Websocket開発ガイド

PHPz
PHPzオリジナル
2023-12-18 17:52:521979ブラウズ

PHP Websocket开发指南,实现实时翻译功能

PHP Websocket 開発ガイド: リアルタイム翻訳機能の実装

はじめに:
インターネットの発展に伴い、リアルタイム通信の重要性がますます高まっていますさまざまなアプリケーションシナリオにおいて、それはより重要になります。新しい通信プロトコルとして、Websocket はリアルタイム通信を適切にサポートします。この記事では、PHP を使用して Websocket アプリケーションを開発し、リアルタイム翻訳機能を組み合わせてその具体的なアプリケーションをデモンストレーションする方法を詳しく説明します。

1. Websocket プロトコルとは何ですか?
Websocket プロトコルは、単一の TCP 接続を介した全二重通信のためのプロトコルです。従来の HTTP プロトコルと比較して、Websocket には次の利点があります。

  1. リアルタイム: Websocket は双方向通信をサポートします。つまり、サーバーはクライアントにデータをアクティブに送信してリアルタイムを実現できます。更新情報。
  2. 低遅延: Websocket プロトコルは接続を確立すると、再度接続を作成しないため、HTTP プロトコルでのハンドシェイク操作が減り、遅延が減少します。
  3. 帯域幅の節約: Websocket プロトコルはバイナリ フレームを使用してデータを送信するため、HTTP プロトコルでのテキスト送信と比較してネットワーク負荷を大幅に軽減できます。

2. PHP を使用した Websocket アプリケーション開発の準備

  1. PHP のインストール
    まず、PHP がインストールされていて、関連する拡張機能 (ソケット、 pcntl、posix。
  2. Composer をインストールする
    インストールするプロジェクト ディレクトリで次のコマンドを実行します。

    $ curl -sS https://getcomposer.org/installer | php
    $ mv composer.phar /usr/local/bin/composer
  3. Rachet ライブラリをインストールする
    次のコマンドを実行します。プロジェクト ディレクトリに、Rachet ライブラリをインストールします:

    $ composer require cboden/ratchet

3. Rachet を使用して Websocket サーバーを実装します

  1. server.php ファイルを作成します
    プロジェクトのルート ディレクトリで、server.php ファイルを作成し、ファイルに次のコードを記述します。

    <?php
    require 'vendor/autoload.php';
    
    use RatchetMessageComponentInterface;
    use RatchetConnectionInterface;
    use RatchetServerIoServer;
    use RatchetHttpHttpServer;
    use RatchetWebSocketWsServer;
    
    class Translator implements MessageComponentInterface
    {
     protected $clients;
    
     public function __construct()
     {
         $this->clients = new SplObjectStorage;
     }
    
     public function onOpen(ConnectionInterface $conn)
     {
         $this->clients->attach($conn);
         echo "New client connected: " . $conn->resourceId . "
    ";
     }
    
     public function onMessage(ConnectionInterface $from, $msg)
     {
         // 实现翻译功能,此处省略具体代码
         $translatedMsg = translate($msg);
    
         foreach ($this->clients as $client) {
             $client->send($translatedMsg);
         }
     }
    
     public function onClose(ConnectionInterface $conn)
     {
         $this->clients->detach($conn);
         echo "Client disconnected: " . $conn->resourceId . "
    ";
     }
    
     public function onError(ConnectionInterface $conn, Exception $e)
     {
         echo "An error occurred: " . $e->getMessage() . "
    ";
         $conn->close();
     }
    }
    
    $server = IoServer::factory(
     new HttpServer(
         new WsServer(
             new Translator()
         )
     ),
     8080
    );
    
    echo "Server is running...
    ";
    $server->run();
  2. Websocket サーバーを起動します
    ターミナルで次のコマンドを実行します。 Websocket サーバーを開始します:

    $ php server.php

    このようにして、Websocket サーバーが正常に開始されます。

4. フロントエンド ページの実装
プロジェクト ルート ディレクトリにindex.html ファイルを作成し、そのファイルに次のコードを記述します:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Websocket实时翻译</title>
</head>
<body>
    <input type="text" id="input">
    <button onclick="send()">翻译</button>
    <br>
    <div id="output"></div>

    <script>
        var conn = new WebSocket('ws://localhost:8080');

        conn.onopen = function(e) {
            console.log("Connection established!");
        };

        conn.onmessage = function(e) {
            var output = document.getElementById('output');
            output.innerHTML += '<p>' + e.data + '</p>';
        };

        function send() {
            var input = document.getElementById('input');
            conn.send(input.value);
            input.value = '';
        }
    </script>
</body>
</html>

5. サンプルを実行します。

  1. Websocket サーバーを起動します。
    ターミナルで次のコマンドを実行して、Websocket サーバーを起動します。

    $ php server.php
  2. フロントを実行します。 -end page
    ブラウザ内でindex.htmlファイルを開くと、シンプルなリアルタイム翻訳ページが表示されます。
  3. リアルタイム翻訳機能を使用する
    入力ボックスに翻訳する内容を入力し、「翻訳」ボタンをクリックすると、以下にリアルタイムで翻訳結果が表示されます。

結論:
この記事では、PHP Websocket 開発の基本手順を簡単に紹介し、リアルタイム翻訳機能と組み合わせたコード例を示します。 Websocket アプリケーションの学習と開発に役立つことを願っています。 Websocket はリアルタイム通信を実現する技術として、実際のアプリケーションシーンで幅広い応用が期待されています。読者は、この例を拡張および変換して、よりリアルタイムの通信機能を実現できます。

以上がリアルタイム翻訳機能を実装するためのPHP Websocket開発ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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