Think-Swoole의 WebSocket 이벤트 구독

풀어 주다: 2020-10-26 14:15:12
앞으로
2364명이 탐색했습니다.

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

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

먼저 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!