SwooleとMQTTプロトコルを組み合わせた実装方法
モノのインターネットの発展に伴い、リアルタイムのデータ送信と通信を必要とするアプリケーションがますます増えています。メッセージ キュー トランスポート プロトコル (MQTT) は、小型デバイスや低帯域幅環境に適した軽量プロトコルであり、IoT デバイスでのデータ送信によく使用されます。高性能、非同期、イベント駆動型のネットワーク通信フレームワークとして、Swoole は TCP/UDP/UnixSocket プロトコルの効率的な実装を提供し、MQTT プロトコルと併用してより効率的なシステム通信を提供できます。
この記事では、Swoole および MQTT プロトコルを使用して通信する方法を紹介し、実現可能なソリューションを提供します。
まず、MQTT プロトコルの基本的な知識を理解する必要があります。これは、デバイス間の双方向通信を可能にするパブリッシュ/サブスクライブ モデルに基づくプロトコルです。 MQTT プロトコルには、パブリッシャーとサブスクライバーという 2 つの主な役割があります。パブリッシャーはトピックにメッセージをパブリッシュし、サブスクライバーは関心のあるトピックをサブスクライブして、パブリッシャーによってパブリッシュされたメッセージをリアルタイムで受信できます。 MQTTプロトコルでは、トピックはパブリッシュ/サブスクライブの識別子として文字列として定義されます。
次に、Swoole フレームワークと組み合わせて MQTT プロトコルのパブリッシュ/サブスクライブ モデルを実装します。
Swoole を使用して MQTT プロトコルを実装する前に、MQTT ライブラリをインストールする必要があります。 Swoole は MQTT 通信に php-mqtt ライブラリを使用でき、composer を使用してそれをインストールできます。
composer require bluerhinos/phpmqtt dev-master
インストールが成功したら、Swoole を使用して MQTT プロトコルとの通信を開始できます。
まず、Swoole フレームワークに基づいて TCP サーバーを作成する必要があります。この TCP サーバーでは、データ送信に MQTT プロトコルを使用します。 Swoole フレームワークでは、次のコードを使用して TCP サーバーを作成できます。
$server = new SwooleServer('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
次に、クライアント要求を処理できるように、サーバーの起動時にサービス フックを登録する必要があります。この例では、onConnect、onReceive、および onClose メソッドを使用します。
$server->on('connect', function ($serv, $fd) { echo "Client: Connect. "; }); $server->on('receive', function ($serv, $fd, $from_id, $data) { echo "Receive Data: $data "; // 处理MQTT消息 }); $server->on('close', function ($serv, $fd) { echo "Client: Close. "; });
クライアント要求を受信すると、MQTT メッセージを解析します。この記事の焦点は、Swoole を使用して MQTT プロトコルを実装する方法であるため、MQTT メッセージを解析する方法のみに焦点を当てます。 MQTT メッセージは、php-mqtt ライブラリを使用して簡単に解析でき、それをメソッドにカプセル化できます:
function handleMqttMessage($client_id, $topic, $message) { echo "Mqtt Message Received: "; echo "Client ID: $client_id "; echo "Topic: $topic "; echo "Message: $message "; }
残りの作業は、MQTT メッセージの解析されたデータを、受信を希望するクライアントに送信することです。 。 MQTT プロトコルでは、パブリッシュ/サブスクライブ モードを使用して通信し、指定されたトピックにメッセージをパブリッシュできます。クライアントは、関心のあるトピックをサブスクライブし、そのトピックに関して公開されたメッセージを受信できます。 Swoole フレームワークでは、swoole_server->task() を使用して特定のクライアントにメッセージを送信できます。
次のコードは、MQTT メッセージを受信した後、対応するトピックにサブスクライブしているすべてのクライアントにメッセージを送信します。
$server->on('receive', function ($serv, $fd, $from_id, $data) { $mqtt = new BluerhinosphpMQTT('localhost', 1883, 'Swoole_Server'); $mqtt->debug = false; if (!$mqtt->connect()) { exit(1); } $topics['topic_name'] = array('qos' => 0, 'function' => 'handleMqttMessage'); $mqtt->subscribe($topics, 0); while ($mqtt->proc()) { }; $mqtt->close(); echo "Receive Data: $data "; $data = json_decode($data, true); $message = $data['message']; $client_ids = $serv->getClientList(); foreach ($client_ids as $client_id) { $serv->task("$client_id:$message"); } });
クライアント メッセージが受信されるたびに、サブスクライブされたトピックはコールバック メソッド handleMqttMessage() を呼び出し、指定されたクライアントにメッセージを送信します。
最後に、Task イベントでメッセージをクライアントに送信する必要があります。
$server->on('task', function ($serv, $task_id, $from_id, $data) { $client_id = strstr($data, ':', true); $message = substr(strstr($data, ':'), 1); $serv->send($client_id, $message); });
上記のコードは、メッセージをクライアントに送信し、送信が成功した後に対応する ACK メッセージを返します。
概要
この記事では、Swoole を使用して MQTT プロトコルを実装する方法を学びました。このようにして、効率的なリアルタイム通信を実現し、非同期のイベント駆動型アプローチを使用してクライアント要求をより適切に処理できます。 Swoole フレームワークは効率的な TCP/UDP/UnixSocket プロトコルの実装を提供し、大企業と小規模プロジェクトの両方に多くの利点をもたらします。将来的には、データ転送と通信に Swoole プロトコルと MQTT プロトコルを使用するアプリケーションがさらに増えることが予想されます。
以上がSwooleとMQTTプロトコルを組み合わせた実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MQTT (MessageQueuingTelemetryTransport) は、IoT デバイス間の通信に一般的に使用される軽量のメッセージ送信プロトコルです。 PHP は、MQTT クライアントの開発に使用できる、一般的に使用されるサーバー側プログラミング言語です。この記事では、PHP を使用して MQTT クライアントを開発する方法を紹介します。以下の内容が含まれます。 MQTT プロトコルの基本概念 PHPMQTT クライアント ライブラリの選択と使用例: PHPMQTT クライアントを使用した公開と使用

Laravel で Swoole コルーチンを使用すると、大量のリクエストを同時に処理でき、次のような利点があります: 同時処理: 複数のリクエストを同時に処理できます。高いパフォーマンス: Linux の epoll イベント メカニズムに基づいて、リクエストを効率的に処理します。低リソース消費: 必要なサーバー リソースが少なくなります。統合が簡単: Laravel フレームワークとのシームレスな統合が可能で、使いやすいです。

Swoole と Workerman はどちらも高性能の PHP サーバー フレームワークです。 Swoole は、非同期処理、優れたパフォーマンス、スケーラビリティで知られており、多数の同時リクエストと高スループットを処理する必要があるプロジェクトに適しています。 Workerman は、使いやすさや同時実行量が少ないプロジェクトに適した直感的な API を備え、非同期モードと同期モードの両方の柔軟性を提供します。

Swoole プロセスではユーザーを切り替えることができます。具体的な手順は、プロセスの作成、プロセス ユーザーの設定、プロセスの開始です。

Swoole サービスを再起動するには、次の手順に従います。 サービスのステータスを確認し、PID を取得します。サービスを停止するには、「kill -15 PID」を使用します。サービスの開始に使用したのと同じコマンドを使用してサービスを再起動します。

パフォーマンスの比較: スループット: Swoole は、コルーチン メカニズムのおかげでスループットが高くなります。レイテンシー: Swoole のコルーチン コンテキスト スイッチングは、オーバーヘッドが低く、レイテンシーが小さくなります。メモリ消費量: Swoole のコルーチンが占有するメモリは少なくなります。使いやすさ: Swoole は、より使いやすい同時プログラミング API を提供します。

Swoole の動作: 同時タスク処理にコルーチンを使用する方法 はじめに 日常の開発では、複数のタスクを同時に処理する必要がある状況によく遭遇します。従来の処理方法は、マルチスレッドまたはマルチプロセスを使用して同時処理を実現することでしたが、この方法にはパフォーマンスとリソース消費の点で特定の問題がありました。スクリプト言語である PHP は通常、タスクを処理するためにマルチスレッドまたはマルチプロセス メソッドを直接使用できません。ただし、Swoole コルーチン ライブラリの助けを借りて、コルーチンを使用して高パフォーマンスの同時タスク処理を実現できます。この記事で紹介するのは

IoT テクノロジーの発展に伴い、インターネットに接続し、インターネットを介して通信および対話できるデバイスがますます増えています。 IoT アプリケーションの開発では、メッセージ キュー テレメトリ トランスポート プロトコル (MQTT) が軽量の通信プロトコルとして広く使用されています。この記事では、Java開発の実務経験を活かしてMQTTによるIoT機能を実装する方法を紹介します。 1. MQT とは何ですか? QTT は、パブリッシュ/サブスクライブ モデルに基づくメッセージ送信プロトコルです。シンプルな設計と低いオーバーヘッドを備えており、少量のデータを迅速に送信するアプリケーション シナリオに適しています。
