ws://your-domain:9501/ws
。ブラウザで複数のタブを開いて、WebSocket 接続、メッセージ送信機能、受信機能をそれぞれテストします。概要
" >php think swoole start --mode=websocket
ログイン後にコピーWebsocket サービスが開始されたので、アプリケーションにアクセスしてテストできます。次のアドレスを使用できます:
php think swoole start --mode=websocket
ws://your-domain:9501/ws
。ブラウザで複数のタブを開いて、WebSocket 接続、メッセージ送信機能、受信機能をそれぞれテストします。概要
ThinkPHP6 を使用した Websocket ブロードキャストの実装
最新の Web アプリケーションの継続的な開発により、リアルタイム通信は必要な機能の 1 つになりました。 WebSocket テクノロジは、最も一般的なリアルタイム通信方法の 1 つであり、サーバーとクライアントの間に永続的な双方向接続を確立してリアルタイム通信を実現できます。
ThinkPHP は非常に人気のある PHP フレームワークであり、ThinkPHP 6 には Swoole 拡張パッケージが付属しているため、WebSocket テクノロジの使用が非常に簡単になります。この記事では、ThinkPHP 6 フレームワークを使用して WebSocket ブロードキャスト機能を実装する方法を紹介します。
環境要件
開始する前に、次の環境を準備する必要があります:
- PHP 7.2
- Swoole 拡張機能
- Composer
- 基本的な Web 開発の知識
プロジェクトの作成
まず、新しいプロジェクトを作成する必要があります:
composer create-project topthink/think my-project
次に、 WebSocket を使用すると便利なので、プロジェクトの composer.json
ファイルに Swoole 拡張機能を追加する必要があります:
"require": { "topthink/think-swoole": "^2.0", "swoole/swoole": "^4.7" }
完了後、次のコマンドを実行してインストールします:
composer install
コントローラーの作成
次に、WebSocket リクエストを処理するコントローラーを作成する必要があります。 app/controller
ディレクトリに Websocket.php
という名前のファイルを作成し、次のコードを記述します。
<?php declare(strict_types=1); namespace appcontroller; use thinkswooleWebsocket as SwooleWebsocket; use SwooleWebSocketFrame; class Websocket extends SwooleWebsocket { /** * 监听连接事件 * @param SwooleWebSocketServer $server * @param SwooleHttpRequest $request */ public function onOpen($server, $request) { } /** * 监听接收消息事件 * @param SwooleWebSocketServer $server * @param Frame $frame */ public function onMessage($server, Frame $frame) { } /** * 监听关闭事件 * @param SwooleWebSocketServer $server * @param int $fd */ public function onClose($server, $fd) { } }
上記のコードでは、 ##thinkswooleWebsocket# を継承しました。 ## クラスを作成し、その 3 つのメソッドをオーバーライドします:
- onOpen
- メソッドは接続イベントをリッスンするために使用されます;
- メソッドはメッセージ イベントの受信をリッスンするために使用され、
- メソッドはクローズ イベントをリッスンするために使用されます。
ルーティングの登録
コントローラーを作成したら、それをルーティングに登録する必要があります。
app/route.php ファイルに次の内容を追加します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>use thinkacadeRoute;
Route::post('/ws', 'Websocket@onMessage')->middleware( hinkmiddlewareAllowCrossDomain::class);</pre><div class="contentsignin">ログイン後にコピー</div></div>
ここでは、ルートを登録するために
メソッドが使用されます。このルートのリクエスト メソッドは POST
、パスは /ws
、リクエストは Websocket## の
onMessage メソッドにマップされます。 #コントローラー。
WebSocket 通信ロジックの作成
onOpen
メソッドでは、クライアントの接続オブジェクトを取得し、後で使用するために保存できます。onMessage メソッドでは、クライアントから送信されたメッセージを取得し、このメッセージを他のクライアントにブロードキャストできます。
onClose メソッドでは、接続プールからクライアントを削除する必要があります。
app/controller
WebSocketServer.php という名前のファイルを作成し、次のコードを記述します:
<?php declare(strict_types=1); namespace appcontroller; use SwooleHttpResponse; use SwooleWebSocketFrame; use SwooleWebSocketServer; use thinkswoolewebsocketHandlerInterface; class WebSocketServer implements HandlerInterface { /** * @var array $connections */ private $connections = []; /** * 监听连接事件 * @param Server $server * @param SwooleHttpRequest $request */ public function onOpen(Server $server, SwooleHttpRequest $request): void { $this->connections[$request->fd] = $request->fd; echo "client-{$request->fd} is connected "; } /** * 监听消息事件 * @param Server $server * @param Frame $frame */ public function onMessage(Server $server, Frame $frame): void { foreach ($this->connections as $fd) { $info = $server->getClientInfo((int)$fd); if ($info && isset($info['websocket_status']) && $info['websocket_status'] == WEBSOCKET_STATUS_FRAME) { $server->push($fd, $frame->data); } else { unset($this->connections[$fd]); } } echo "received message from client-{$frame->fd}: {$frame->data} "; } /** * 监听关闭事件 * @param Server $server * @param int $fd * @param int $reactorId */ public function onClose(Server $server, int $fd, int $reactorId): void { unset($this->connections[$fd]); echo "client-{$fd} is closed "; } /** * @param Response $response */ public function onHandShake(Request $request, Response $response): bool { // Do nothing return true; } }
WebSocket サービスの構成
WebSocket サービス コードを記述する前に、config
ディレクトリにswoole.php という名前の構成ファイルを作成し、次の内容を記述する必要があります。
return [ 'socket_type' => 'websocket', 'host' => '0.0.0.0', 'port' => 9501, 'mode' => SWOOLE_PROCESS, 'sock_type' => SWOOLE_SOCK_TCP, 'settings' => [ 'worker_num' => swoole_cpu_num(), ], 'handler' => ppcontrollerWebSocketServer::class, ];
上記のコードでは、構成ファイルを通じて Swoole WebSocket サービスを開始する方法をアプリケーションに伝えます。
websocket ソケット タイプを開始し、0.0.0.0:9501 にバインドし、TCP プロトコルを使用してマルチプロセス モードを有効にします。
worker_num 構成項目は、サーバーのプロセス数を設定します。
swoole_cpu_num() は、システム CPU の数を返すためにここで使用されます。
handler 構成項目は、次の内容を指定します。
WebSocketServer クラスを作成しました。
WebSocket サービスの実行
php think swoole start --mode=websocket
ログイン後にコピーWebsocket サービスが開始されたので、アプリケーションにアクセスしてテストできます。次のアドレスを使用できます:
php think swoole start --mode=websocket
ws://your-domain:9501/ws
。ブラウザで複数のタブを開いて、WebSocket 接続、メッセージ送信機能、受信機能をそれぞれテストします。概要
以上がThinkPHP6 を使用した Websocket ブロードキャストの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

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

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

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

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

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

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

Java と WebSocket を使用してリアルタイム株価プッシュを実装する方法 はじめに: インターネットの急速な発展に伴い、リアルタイム株価プッシュは投資家の注目の 1 つとなっています。従来の株式市場のプッシュ方式では、遅延が大きい、更新速度が遅いなどの問題があり、投資家にとって最新の株式市場情報をタイムリーに入手できないことは、投資判断の誤りにつながる可能性があります。 Java と WebSocket に基づくリアルタイムの株価プッシュはこの問題を効果的に解決し、投資家が最新の株価情報をできるだけ早く入手できるようにします。
