検索
ホームページPHPフレームワークSwooleSwooleを使ってWebSocket通信を実装する方法

Swooleを使ってWebSocket通信を実装する方法

Nov 07, 2023 pm 12:56 PM
websocket通信swoole

Swooleを使ってWebSocket通信を実装する方法

Swoole は、非同期 IO、マルチプロセス、マルチスレッド、コルーチン、その他の機能をサポートする高性能 PHP コルーチン ネットワーク フレームワークです。その中でも、Swoole が提供する WebSocket コンポーネントは、リアルタイムの双方向通信を実現するために使用でき、リアルタイム アプリケーションの構築に最適です。この記事では、Swooleを使用してWebSocket通信を実装する方法と、具体的なコード例を紹介します。

1. 環境の準備

Swoole を使用して WebSocket 通信を実装する前に、Swoole 拡張機能がインストールされていることを確認する必要があります。これは、コマンド

pecl install swoole

を使用してインストールするか、公式 GitHub リポジトリからソース コード ビルドをダウンロードできます。

2. WebSocket サーバーの作成

Swoole の WebSocket コンポーネントをコードに導入し、WebSocket サーバーを作成し、クライアントとの接続を監視します。コードは次のとおりです。

use SwooleWebSocketServer;

// 创建WebSocket服务器
$server = new Server('0.0.0.0', 9501);

// 监听WebSocket连接事件
$server->on('open', function (Server $server, $request) {
    echo "Client {$request->fd} connected
";
});

// 启动服务器
$server->start();

上記のコードは、リスニング ポート 9501 を持つ WebSocket サーバーを作成し、接続の確立時に接続されたクライアントのファイル記述子 (fd) を出力します。

3. WebSocket メッセージの処理

WebSocket サーバーがクライアントとの接続を確立すると、クライアントはサーバーにメッセージを送信できます。サーバーはクライアントとのメッセージ イベントをリッスンして処理する必要があります。 WebSocket メッセージの処理プロセスは HTTP リクエストのプロセスと似ており、メッセージ ヘッダーを解析してメッセージ本文を取得することで、メッセージの内容を取得できます。コードは次のとおりです。

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
});

上記のコードは、WebSocket メッセージ イベントをリッスンし、メッセージの受信時にメッセージの内容を出力します。

4. WebSocket クライアントへのメッセージの送信

WebSocket サーバーのクライアントにメッセージを送信するには、サーバーの push メソッドを使用する必要があります。このメソッドは、クライアントのファイル記述子と、送信する必要があるメッセージの内容を受け入れます。コードは次のとおりです。

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
    
    // 向客户端发送消息
    $server->push($frame->fd, 'Server received message: '.$frame->data);
});

上記のコードは、WebSocket メッセージの処理時にクライアントにメッセージを返信します。

5. 完全なコード例

use SwooleWebSocketServer;

// 创建WebSocket服务器
$server = new Server('0.0.0.0', 9501);

// 监听WebSocket连接事件
$server->on('open', function (Server $server, $request) {
    echo "Client {$request->fd} connected
";
});

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
    
    // 向客户端发送消息
    $server->push($frame->fd, 'Server received message: '.$frame->data);
});

// 启动服务器
$server->start();

6. WebSocket クライアント

WebSocket サーバーの構築が完了したら、WebSocket クライアントを使用してサーバーにメッセージを送信する必要がありますサーバーからの応答メッセージを受信します。以下は、WebSocket クライアントのサンプル コードです。

// 创建WebSocket连接
const ws = new WebSocket('ws://localhost:9501');

// 监听WebSocket连接事件
ws.addEventListener('open', function (event) {
    console.log('Connected to WebSocket server');
    
    // 发送消息
    ws.send('Hello, Swoole WebSocket');
});

// 监听WebSocket消息事件
ws.addEventListener('message', function (event) {
    console.log('Received message:', event.data);
});

上記のコードは、JavaScript を使用して WebSocket 接続を作成し、接続の確立後に WebSocket サーバーにメッセージを送信します。メッセージがサーバーによって処理されると、サーバーは応答メッセージをクライアントに送り返します。クライアントはメッセージ イベントをリッスンすることで応答メッセージを受信できます。

7. 概要

この記事では、Swoole を使用して WebSocket 通信を実装する方法を紹介し、WebSocket サーバーの作成方法、メッセージの処理方法、およびクライアントへのメッセージの送信方法をコード例を通して示します。 Swoole の 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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません