PHPを使用してWebSocketサービスを実装する

WBOY
リリース: 2023-06-22 13:00:01
オリジナル
7278 人が閲覧しました

インターネットの発展に伴い、WebSocket テクノロジはますます広く使用されるようになりました。 WebSocket テクノロジーは双方向のリアルタイム通信を実現でき、インスタント メッセージングやゲームなどの一部のアプリケーション シナリオに適しており、より優れたユーザー エクスペリエンスを提供できます。この記事では、PHPを使用してWebSocketサービスを実装する方法を紹介します。

1. WebSocket の概要
WebSocket は HTML5 で提案された新しいプロトコルです. 単一の TCP 接続で全二重通信を行うためのプロトコルです. リアルタイム通信をサポートし, HTTP よりも遅延が低いです. . 大量のデータ送信を実行できます。 WebSocket を使用すると、サーバーのオーバーヘッドを削減し、ネットワーク帯域幅を節約しながら、リアルタイム通信を実現できます。

2. WebSocket 実装方法

  1. サーバー

(1)WebSocket サーバーの作成:

// 创建WebSocket服务器
$server = new swoole_websocket_server("0.0.0.0", 9502);

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

// 监听WebSocket消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    // 处理接收到的消息
    $message = "server received message: {$frame->data}
";
    // 向WebSocket客户端发送消息
    $server->push($frame->fd, $message);
});

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

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

(2)サーバープッシュメッセージ:

// 向WebSocket客户端发送消息
$server->push($frame->fd, $message);
ログイン後にコピー
ログイン後にコピー
  1. クライアント

(1) WebSocket接続の作成:

// 创建WebSocket连接
var ws = new WebSocket("ws://localhost:9502");

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

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

// 监听WebSocket关闭事件
ws.onclose = function() {
    console.log("WebSocket连接已关闭");
};
ログイン後にコピー

(2) クライアントがメッセージを送信:

// 向WebSocket服务器发送消息
ws.send("hello");
ログイン後にコピー
ログイン後にコピー

3 . 実装プロセスの詳細説明

以下、上記のコードブロックの各部分を詳しく紹介します。

  1. サーバー

(1) WebSocket サーバーを作成します:

// 创建WebSocket服务器
$server = new swoole_websocket_server("0.0.0.0", 9502);
ログイン後にコピー

このコードは、IP アドレスを 0.0.0.0 として指定して WebSocket サーバーを作成します。ポートは9502です。

(2) WebSocket 接続イベントをリッスンする:

// 监听WebSocket连接事件
$server->on('open', function (swoole_websocket_server $server, $request) {
    echo "client {$request->fd} connected
";
});
ログイン後にコピー

WebSocket クライアントが接続されると、「open」イベントがトリガーされます。ここでの $request は、クライアントの IP アドレス、接続時間など、クライアント接続に関する情報を含むオブジェクトです。

(3) WebSocket メッセージ イベントをリッスンする:

// 监听WebSocket消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    // 处理接收到的消息
    $message = "server received message: {$frame->data}
";
    // 向WebSocket客户端发送消息
    $server->push($frame->fd, $message);
});
ログイン後にコピー

WebSocket クライアントがメッセージを送信すると、「message」イベントがトリガーされます。ここでの $frame は、メッセージの内容、送信時刻など、受信したメッセージに関する情報を含むオブジェクトです。

(4) WebSocket の終了イベントをリッスンします:

// 监听WebSocket关闭事件
$server->on('close', function (swoole_websocket_server $server, $fd) {
    echo "client {$fd} closed
";
});
ログイン後にコピー

WebSocket クライアントが接続を閉じると、「close」イベントがトリガーされます。ここでの $fd は、クライアント接続の一意の識別子です。

(5) WebSocket サーバーを起動します:

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

start() メソッドを使用して WebSocket サーバーを起動し、クライアント接続とメッセージの監視を開始できるようにします。

(6) サーバー プッシュ メッセージ:

// 向WebSocket客户端发送消息
$server->push($frame->fd, $message);
ログイン後にコピー
ログイン後にコピー

push() メソッドを使用して、指定されたクライアントにメッセージを送信します。 $frame->fd はクライアント接続の一意の識別子で、$message は送信されるメッセージのコンテンツです。

  1. クライアント

(1) WebSocket 接続を作成します:

// 创建WebSocket连接
var ws = new WebSocket("ws://localhost:9502");
ログイン後にコピー

このコードは、URL を ws:// localhost として指定して、WebSocket 接続を作成します。 :9502。このうち、wsはプロトコルの種類、localhostはWebSocketサーバーのIPアドレス、9502は待ち受けポート番号を表します。

(2) WebSocket 接続イベントをリッスンします:

// 监听WebSocket连接事件
ws.onopen = function() {
    console.log("WebSocket连接已打开");
};
ログイン後にコピー

WebSocket 接続が成功すると、「open」イベントがトリガーされます。ここでは、console.log() メソッドを使用してメッセージを出力します。

(3) WebSocket メッセージ イベントをリッスンする:

// 监听WebSocket消息事件
ws.onmessage = function(event) {
    console.log("WebSocket收到消息:" + event.data);
};
ログイン後にコピー

WebSocket クライアントがメッセージを受信すると、「message」イベントがトリガーされます。ここでは、console.log() メソッドを使用してメッセージを出力します。

(4) WebSocket の終了イベントをリッスンします:

// 监听WebSocket关闭事件
ws.onclose = function() {
    console.log("WebSocket连接已关闭");
};
ログイン後にコピー

WebSocket 接続が終了すると、「close」イベントがトリガーされます。ここでは、console.log() メソッドを使用してメッセージを出力します。

(5) クライアントはメッセージを送信します:

// 向WebSocket服务器发送消息
ws.send("hello");
ログイン後にコピー
ログイン後にコピー

send() メソッドを使用して、WebSocket サーバーにメッセージを送信します。ここでは文字列「hello」を送信します。

4. まとめ

この記事では、PHP を使用して WebSocket サービスを実装する方法を紹介します。 WebSocket テクノロジーは、リアルタイム通信、ゲームなどの分野で広く使用されており、HTTP よりも遅延が低く、より優れたユーザー エクスペリエンスを提供できます。 PHP を使用して WebSocket サービスを実装すると、リアルタイム通信を迅速かつ簡単に実現し、サーバーのオーバーヘッドを削減し、ネットワーク帯域幅を節約できます。

以上がPHPを使用してWebSocketサービスを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!