目次
Swoole と WebSocket
ステップ 1: プロジェクト環境の準備
ステップ 2: WebSocket サーバーを開始する
ステップ 3: データ対話
サーバーはクライアントにデータを送信します。
クライアントはサーバーにデータを送信します
完全なコード例
ホームページ PHPフレームワーク Swoole Swoole を使用して WebSocket サーバーとクライアントの対話を実装する方法

Swoole を使用して WebSocket サーバーとクライアントの対話を実装する方法

Nov 07, 2023 pm 02:15 PM
websocket 交流 swoole

Swoole を使用して WebSocket サーバーとクライアントの対話を実装する方法

WebSocket は、最新の Web アプリケーションで一般的に使用されるリアルタイム通信プロトコルになりました。 PHP を使用して WebSocket サーバーを開発するには、通常、Swoole などの拡張機能を使用する必要があります。これは、Swoole が非同期プログラミング、プロセス管理、メモリ マッピング、およびその他の WebSocket 関連機能をサポートするためです。この記事では、Swoole を使用して WebSocket サーバーとクライアントの対話を実装する方法について説明し、いくつかの具体的なコード例を示します。

Swoole と WebSocket

Swoole は、WebSocket サーバーの実装に優れたサポートを提供する優れた PHP 拡張機能です。 Swoole は、非同期プログラミング、マルチプロセスおよびマルチスレッドの同時アクセスをサポートしています。サーバーのライフサイクルを管理し、メモリ マッピングなどのその他の便利な機能を提供します。 WebSocket は、最新の Web アプリケーションでよく使用されるリアルタイム通信プロトコルであり、Swoole を使用して WebSocket サーバーを開発すると、クライアントとのリアルタイム通信を簡単に実装できます。

ステップ 1: プロジェクト環境の準備

まず、Swoole 拡張機能をインストールする必要があります。これは、次のコマンドでインストールできます。

pecl install swoole
ログイン後にコピー

インストール後、次のコマンドを追加する必要があります。 php.ini ファイルに次の設定を追加します。

extension=swoole
ログイン後にコピー

上記の操作を完了すると、PHP で Swoole 拡張機能を使用できるようになります。

次に、ネットワーク ツールを使用するか、Chrome ブラウザのプラグイン「Simple WebSocket Client」をインストールして、WebSocket クライアントをローカルに構築する必要があります。

ステップ 2: WebSocket サーバーを開始する

このプロセスでは、まず Swoole WebSocket サーバー インスタンスを作成し、リスニング ポートと IP アドレスの設定などの基本的な構成を実行する必要があります。 WebSocket サーバーは、WebSocket サーバーからのさまざまなイベントやデータを処理する必要もあります。以下は簡単な例です:

$server = new SwooleWebsocketServer("0.0.0.0", 9501);

$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "connection open: {$request->fd}
";
});

$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    echo "received message: {$frame->data}
";
    $server->push($frame->fd, json_encode(["hello", "world"]));
});

$server->on('close', function (SwooleWebSocketServer $server, $fd) {
    echo "connection close: {$fd}
";
});

$server->start();
ログイン後にコピー

上記のコードでは、WebSocket サーバー インスタンスは new キーワードを使用して作成されます。そのコンストラクターは IP アドレスとポート番号を渡す必要があり、Swoole はこのポートで WebSocket 接続を待機します。次に、WebSocket サーバーのオープン、メッセージ、クローズ イベントは、いくつかのコールバック関数を通じて処理されます。最後に、 $server->start() メソッドを呼び出して、WebSocket サーバーを開始します。

WebSocket サーバー インスタンスを作成した後、イベント コールバックを再バインドすることですべてのユーザー イベントを処理できます。たとえば、「open」コールバック関数を再バインドすることで、サーバーへの WebSocket クライアント接続のオープン イベントを処理できます。

ステップ 3: データ対話

WebSocket クライアントとサーバーが対話するには 2 つの方法があります。サーバーがデータをクライアントにプッシュする方法と、クライアントが WebSocket サーバーにデータを送信する方法です。

サーバーはクライアントにデータを送信します。

サーバーは $server->push() メソッドを使用して、特定のクライアントまたはすべてのクライアントにデータをプッシュできます。簡単な例を次に示します。

$server->push($frame->fd, json_encode(["hello", "world"]));
ログイン後にコピー

上記のコードでは、$frame->fd はクライアントの一意の識別子です。 WebSocket 接続は、サーバーに対して開かれた TCP 接続と考えることができ、クライアントは一意の識別子 ($frame->fd) によって識別されます。

クライアントはサーバーにデータを送信します

クライアントは、JavaScript で記述された WebSocket API を使用してサーバーにデータを送信できます。以下は、WebSocket サーバーにデータを送信する方法を示す簡単な JavaScript コード スニペットです。

const socket = new WebSocket('ws://localhost:9501');
socket.addEventListener('open', function (event) {
    socket.send('Hello World!'); // 发送数据
});
ログイン後にコピー

クライアントとサーバー間の通信はイベントベースであるため、受信したデータはイベント ハンドラーを通じて処理する必要があります。コールバック関数は、受信したデータの処理を担当する「message」WebSocket イベントにバインドする必要があります。以下は簡単な例です:

$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    echo "received message: {$frame->data}
";
});
ログイン後にコピー

完全なコード例

以下は完全な Swoole WebSocket サーバーの例であり、Swoole を使用して WebSocket サーバーを確立し、クライアントと対話する方法を示しています。

ログイン後にコピー

この WebSocket サーバーは、ポート 9501 で WebSocket 接続をリッスンして処理します。任意の WebSocket クライアントを使用して、このサーバー インスタンスをテストおよび調査できます。

以上がSwoole を使用して WebSocket サーバーとクライアントの対話を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPとWebSocketを使ってリアルタイム通信を実現する方法 PHPとWebSocketを使ってリアルタイム通信を実現する方法 Dec 17, 2023 pm 10:24 PM

インターネット技術の継続的な発展により、リアルタイム通信は日常生活に欠かせないものになりました。 WebSocket テクノロジーを使用すると、効率的で低遅延のリアルタイム通信を実現できます。また、インターネット分野で最も広く使用されている開発言語の 1 つである PHP も、対応する WebSocket サポートを提供します。この記事では、PHP と WebSocket を使用してリアルタイム通信を実現する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は単一の

PHP と WebSocket: リアルタイム データ転送のベスト プラクティス PHP と WebSocket: リアルタイム データ転送のベスト プラクティス Dec 18, 2023 pm 02:10 PM

PHP と WebSocket: リアルタイム データ転送のベスト プラクティス方法 はじめに: Web アプリケーション開発では、リアルタイム データ転送は非常に重要な技術要件です。従来の HTTP プロトコルは要求応答モデルのプロトコルであり、リアルタイムのデータ送信を効果的に実現できません。リアルタイム データ送信のニーズを満たすために、WebSocket プロトコルが登場しました。 WebSocket は、単一の TCP 接続上で全二重通信を行う方法を提供する全二重通信プロトコルです。 Hと比べて

Laravelでswooleコルーチンを使用する方法 Laravelでswooleコルーチンを使用する方法 Apr 09, 2024 pm 06:48 PM

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

Java Websocket はオンライン ホワイトボード機能をどのように実装しますか? Java Websocket はオンライン ホワイトボード機能をどのように実装しますか? Dec 17, 2023 pm 10:58 PM

JavaWebsocket はオンライン ホワイトボード機能をどのように実装しますか?現代のインターネット時代では、人々はリアルタイムのコラボレーションと対話の経験にますます注目しています。オンラインホワイトボードは、Websocketをベースに実装された機能で、複数のユーザーがリアルタイムで共同作業して同じ描画ボードを編集し、描画や注釈などの操作を完了できるようにし、オンライン教育、リモート会議、チームコラボレーション、他のシナリオ。 1. 技術的背景 WebSocket は HTML5 で提供される新しいプロトコルです。

SSE と WebSocket SSE と WebSocket Apr 17, 2024 pm 02:18 PM

この記事では、どちらも信頼できるデータ配信方法である Server Sent Events (SSE) と WebSocket を比較します。通信方向、基盤となるプロトコル、セキュリティ、使いやすさ、パフォーマンス、メッセージ構造、使いやすさ、テストツールを含む 8 つの側面で分析します。これらの側面の比較は次のように要約されます。 カテゴリ サーバー送信イベント (SSE) WebSocket の通信方向 単方向 双方向 基礎となるプロトコル HTTP WebSocket プロトコルのセキュリティ HTTP と同じ 既存のセキュリティの脆弱性 使いやすさ セットアップが簡単 セットアップが複雑 パフォーマンスが速い メッセージ送信速度が高い メッセージ処理の影響を受けるおよび接続管理 メッセージ構造 プレーンテキストまたはバイナリ 使いやすさ 広く利用可能 WebSocket の統合に役立つ

win11 で分割画面インタラクションを有効にする win11 で分割画面インタラクションを有効にする Dec 25, 2023 pm 03:05 PM

win11 システムでは、画面分割インタラクションをオンにすることで、複数のモニターが同じシステムを使用して一緒に操作できるようにすることができます。しかし、多くの友人は、画面分割インタラクションをオンにする方法を知りません。実際には、画面分割インタラクションを有効にする方法を知りません。システム設定 以下は「起きて勉強してください」です。 win11 で分割画面インタラクションを開く方法 1. スタート メニューをクリックし、[設定] を見つけます。 2. そこで [システム] 設定を見つけます。 3. システム設定を入力したら、左側の「ディスプレイ」を選択し、右側の複数のディスプレイで「これらのディスプレイを拡張する」を選択します。

golang WebSocket プログラミングのヒント: 同時接続の処理 golang WebSocket プログラミングのヒント: 同時接続の処理 Dec 18, 2023 am 10:54 AM

Golang は強力なプログラミング言語であり、WebSocket プログラミングでの Golang の使用が開発者の間でますます評価されています。 WebSocket は、クライアントとサーバー間の双方向通信を可能にする TCP ベースのプロトコルです。この記事では、Golang を使用して、複数の同時接続を同時に処理する効率的な WebSocket サーバーを作成する方法を紹介します。テクニックを紹介する前に、まず WebSocket とは何かを学びましょう。 WebSocketWeb の概要

Golang でのファイル転送に WebSocket を使用する方法 Golang でのファイル転送に WebSocket を使用する方法 Dec 18, 2023 am 09:06 AM

golang で WebSocket を使用してファイル転送を行う方法 WebSocket は、双方向通信をサポートし、ブラウザとサーバーの間に永続的な接続を確立できるネットワーク プロトコルです。 golang では、サードパーティのライブラリ Gorilla/websocket を使用して WebSocket 機能を実装できます。この記事では、ファイル転送に golang と Gorilla/WebSocket ライブラリを使用する方法を紹介します。まず、ゴリラをインストールする必要があります

See all articles