ホームページ > バックエンド開発 > PHPチュートリアル > PHP開発でWebSocketを使用してリアルタイム通信を行う方法

PHP開発でWebSocketを使用してリアルタイム通信を行う方法

WBOY
リリース: 2023-06-25 19:20:02
オリジナル
868 人が閲覧しました

インターネットの発展に伴い、リアルタイム コミュニケーションは私たちにとって切り離せない部分になりました。 HTTP アップグレード プロトコルの 1 つである WebSocket は、TCP プロトコルに基づいてより効率的で安定しています。 PHP 開発において、WebSocket を使用してリアルタイム通信を実現するにはどうすればよいでしょうか?本稿では以下の観点から紹介していきます。

WebSocket の概要

WebSocket は、TCP プロトコルに基づいて通信するネットワーク プロトコルで、通常はリア​​ルタイム通信に使用されます。 WebSocket は HTTP プロトコルと異なり、サーバーとクライアント間の接続を長時間維持でき、全二重通信を実現し、データ転送効率が高くなります。従来の HTTP プロトコルでは、クライアントはリクエストによってサーバーからデータを取得し、サーバーはリクエストに応答してデータをクライアントに返しますが、データ送信がない場合でも TCP 接続を維持する必要があります。 WebSocket では、接続を確立する必要があるのはハンドシェイク中に 1 回だけであり、その後のデータ送信は毎回接続を確立する必要がなく、この接続に基づいて行うことができます。

Swoole 拡張機能を使用する

Swoole は、PHP 用に開発された高性能ネットワーク通信フレームワークで、コルーチンと非同期 IO 操作をサポートし、WebSocket プロトコルもサポートしています。 Swoole 拡張機能を使用して WebSocket リアルタイム通信を実装するプロセスでは、Swoole ライブラリによって提供される WebSocket サーバー クラスを使用する必要があります。

Swoole のインストール

# CentOS 6 系统下安装
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
sudo rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
sudo yum install php56w php56w-opcache php56w-devel php56w-pear gcc automake autoconf make
sudo pecl install swoole
ログイン後にコピー

WebSocket サーバーの作成

<?php
// 创建 WebSocket 服务器对象,监听 127.0.0.1:9502 端口
$server = new SwooleWebSocketServer("127.0.0.1", 9502);

// 监听 WebSocket 连接打开事件
$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "client {$request->fd} opened
";
});

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

// 监听 WebSocket 连接关闭事件
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed
";
});

// 启动服务器
$server->start();
ログイン後にコピー

上記のコードでは、まず監視する WebSocket サーバー オブジェクトを作成します。次に、$server->on() メソッドを使用して、WebSocket 接続の開始、メッセージ、接続の終了、その他のイベントをそれぞれリッスンします。クライアントから送信されたメッセージを受信した後、サーバーはメッセージの内容をコンソールに出力し、$server->push() メソッドを通じてメッセージをクライアントに送り返します。

フロントエンド ページの実装

WebSocket サーバーを作成した後、フロントエンド ページに JavaScript コードを記述し、WebSocket オブジェクトを作成し、イベントの監視とメッセージ送信を実行する必要があります。具体的なコードは次のとおりです。

// 创建 WebSocket 对象
var ws = new WebSocket("ws://127.0.0.1:9502");

// 监听 WebSocket 连接打开事件
ws.onopen = function() {
    console.log("WebSocket connection established");
};

// 监听 WebSocket 消息事件
ws.onmessage = function(event) {
    console.log("received message: " + event.data);
};

// 监听 WebSocket 连接关闭事件
ws.onclose = function() {
    console.log("WebSocket connection closed");
};

// 发送消息
ws.send("hello world");
ログイン後にコピー

上記のコードでは、new WebSocket("ws://127.0.0.1:9502") を使用して WebSocket オブジェクトを作成し、 # を渡します。 ##ws はそれぞれ、イベント監視用の .onopen()ws.onmessage()、および ws.onclose() メソッドです。ページでメッセージを送信するときは、ws.send() メソッドを通じてサーバーにメッセージを送信できます。

結論

この記事では、Swoole 拡張機能とフロントエンド ページの実装を含む、PHP 開発におけるリアルタイム通信に WebSocket を使用する方法を簡単に紹介します。実際の使用においても、特定のビジネス ニーズに応じて調整および改善する必要があります。この記事が参考になり、役立つことを願っています。

以上がPHP開発でWebSocketを使用してリアルタイム通信を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート