>PHP 프레임워크 >ThinkPHP >Think-Swoole의 WebSocket 이벤트 구독

Think-Swoole의 WebSocket 이벤트 구독

藏色散人
藏色散人앞으로
2020-10-26 14:15:122428검색

이전 예를 통해 이전 이벤트 수신 방법을 따르면 클라이언트의 각 장면 이벤트에 대해 서버에서 해당 이벤트를 각각 생성해야 합니다. 이벤트가 너무 많으면 앱에 파일이 많아집니다. 리스너 디렉터리(사실 나쁜 현상은 아닙니다.) 이벤트 구독은 이 문제를 해결하고 모든 이벤트를 파일에 기록하는 것입니다.

다음은 이벤트 구독을 사용하여 이벤트를 처리합니다

먼저 app/event.php에서 이전에 수신된 이벤트를 주석 처리한 다음 수신 이벤트를 생성해야 합니다. php는 make:listener SubTest를 생각하세요.

그런 다음 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;]);
    }
}

메소드 이름 지정 이벤트 듣기 사양: on+이벤트 장면 식별(혹 이름 지정)

이전 프런트 엔드 페이지에서 테스트한 결과 모든 것이 정상입니다.

위 내용은 Think-Swoole의 WebSocket 이벤트 구독의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 阿dai哥에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제