ホームページ > PHPフレームワーク > ThinkPHP > Think-Swoole の WebSocket イベント サブスクリプション

Think-Swoole の WebSocket イベント サブスクリプション

リリース: 2020-10-26 14:15:12
転載
2432 人が閲覧しました

前の例を通じて、前のイベント リスニング方法に従う場合、サーバーはクライアント上の各シーン イベントに対応する各イベントを作成する必要があります。イベントが多すぎると、アプリ内に多数のイベントが存在することになります。 /listener ディレクトリ ファイル (実際には悪い現象ではありません)、イベント サブスクリプションは、この問題を解決し、すべてのイベントをファイルに書き込むことです。

以下ではイベント サブスクリプションを使用してイベントを処理します

まず、app/event.php で以前にリッスンしていたイベントをコメント アウトし、リッスン イベントを作成する必要があります: php think make:listener サブテスト。

次に、新しく作成したリッスン ファイルを websocket で設定します => config/swoole.php 設定でサブスクライブします:

'websocket'  => [
        .
        .
        .
        'listen'        => [],
        'subscribe'     => [
           \app\listener\SubTest::class
        ],
],
ログイン後にコピー

app/listener/SubTest でリッスンする必要があるイベントを定義します。 php:

<?php
declare (strict_types = 1);
namespace app\listener;
class SubTest
{
    protected $websocket = null;
    public function __construct()
{
        $this -> websocket = app(&#39;\think\swoole\Websocket&#39;);
    }
    //连接事件
    public function onConnect()
{
        $this -> websocket -> emit(&#39;sendfd&#39;,$this -> websocket -> getSender());
    }
    //加入房间
    public function onJoin($event)
{
        $this -> websocket -> join($event[&#39;room&#39;]);
        $this -> websocket -> emit(&#39;joincallback&#39;,&#39;加入房间成功&#39;);
    }
    public function onRoomTest($event)
{
        $this -> websocket -> to($event[&#39;room&#39;]) -> emit(&#39;roomtestcallback&#39;,$event[&#39;message&#39;]);
    }
}
ログイン後にコピー

イベントをリッスンするメソッドの命名規則: イベント シーン識別子 (ハンプ命名)

前のフロントエンド ページでテストしたところ、すべてが正常でした。

以上がThink-Swoole の WebSocket イベント サブスクリプションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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