>PHP 프레임워크 >ThinkPHP >ThinkPHP6에서 실시간 통신 작업을 위해 Tencent Cloud IM을 사용하는 방법은 무엇입니까?

ThinkPHP6에서 실시간 통신 작업을 위해 Tencent Cloud IM을 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-06-12 08:03:111823검색

인터넷과 모바일 인터넷의 급속한 발전으로 인해 실시간 통신 기술은 많은 애플리케이션에서 없어서는 안될 부분이 되었습니다. Tencent Cloud IM(인스턴트 메시징 IM)은 중국 최고의 실시간 커뮤니케이션 플랫폼 중 하나로 그 기능과 성능도 널리 인정받고 있습니다. 이 기사에서는 실시간 통신 작업을 위해 ThinkPHP6 프레임워크에서 Tencent Cloud IM을 사용하는 방법을 소개합니다.

1. Tencent Cloud IM 계정을 신청하세요

먼저 Tencent Cloud 공식 홈페이지(https://cloud.tencent.com/product/im)에 접속하셔서 IM 서비스를 신청하셔야 합니다. 등록이 완료되면 콘솔에서 애플리케이션을 생성하고 해당 SDKAppID, 식별자 및 SecretKey를 가져옵니다. 이 정보는 후속 구성에 사용됩니다.

2. 공식 IM SDK 설치

Tencent Cloud는 개발자가 사용할 수 있도록 다양한 언어로 IM SDK를 제공합니다. 이 글에서는 주로 IM SDK의 PHP 버전을 소개합니다. 공식 GitHub 저장소(https://github.com/tencentyun/TIMServer/tree/master/examples/php)에 들어가 최신 php-sdk-v4를 다운로드하세요.

ThinkPHP6 애플리케이션 디렉토리에서 작곡가를 통해 ImSDK 패키지를 설치하고 IM SDK의 자동 로딩을 실현하려면 작곡가 필요 tencentyun/php-sdk-v4:latest 명령을 실행하세요.

3. IM SDK 구성

ThinkPHP6 프로젝트 구성 파일(기본값은 config/app.php)에 다음 구성 항목을 추가합니다.

'imsdk' => [
    'sdk_app_id'   => 'SDKAppID',   // 应用ID
    'identifier'   => 'Identifier', // 用户标识
    'exp_time'     => 86400,        // 身份凭证有效时间(单位:秒)
    'private_key'  => 'SecretKey',  // 应用密钥
    'public_key'   => 'PublicKey',  // 公钥,非必填项
    'http_scheme'  => 'https',      // HTTPS协议
    'account_type' => '1',          // 账号类型,非必填项
],

그 중 sdk_app_id为申请IM服务时获得的应用ID,identifier为用户在应用中的标识,exp_time为身份凭证的有效时间,private_key为申请IM服务时获得的应用密钥,http_scheme为通信协议,account_type는 계정 유형(기본값은 1)입니다.

4. IM SDK 통합

ThinkPHP6에서는 서비스 컨테이너를 사용하여 IM SDK를 통합할 수 있습니다. 먼저 프로젝트 루트 디렉터리에 Service 디렉터리를 만들고 이 디렉터리에 새 IMService 클래스를 만들어야 합니다. 이 클래스의 코드는 다음과 같습니다.

<?php
namespace appservice;

use IlluminateSupportFacadesLog;
use TencentyunTIMTIMSdk;

class IMService
{
    private $sdk;

    public function __construct()
    {
        $sdk = new TIMSdk(config('imsdk.sdk_app_id'), config('imsdk.identifier'));
        $sdk->setPrivateKey(config('imsdk.private_key'));
        $sdk->setPublickey(config('imsdk.public_key', ''));
        $sdk->setExpire(config('imsdk.exp_time'));
        $sdk->setAccountType(config('imsdk.account_type', '1'));
        $sdk->setHttpScheme(config('imsdk.http_scheme', 'https'));
        $this->sdk = $sdk;
    }

    public function createGroup($name)
    {
        $group = $this->sdk->getGroup();
        $data = [
            'Type' => 'Public',   // 群组类型(Public:公开群)
            'Name' => $name,      // 群组名称
        ];
        return $group->create($data);
    }
}

이 클래스는 주로 IM 서비스 인스턴스 생성을 구현하고 그룹 생성과 같은 일부 IM 작업을 캡슐화합니다.

다음으로 config/ 디렉터리에 im.php 파일을 생성하여 서비스 컨테이너의 바인딩을 설정합니다. 코드는 다음과 같습니다.

<?php
use appserviceIMService;
return [
    'im' => IMService::class,
];

이 코드는 IMService 클래스를 서비스 컨테이너의 im이라는 이름에 바인딩합니다.

마지막으로 컨트롤러 등 IM 서비스를 사용해야 하는 곳에는 다음과 같이 종속성 주입을 통해 바인딩된 서비스를 사용할 수 있습니다.

<?php
namespace appcontroller;

use appserviceIMService;
use thinkacadeRequest;

class Index
{
    public function index(IMService $im)
    {
        $groupName = Request::param('groupName');
        $result = $im->createGroup($groupName);
        if ($result['ErrorCode'] > 0) {
            return json([
                'code' => 0,
                'msg'  => $result['ErrorInfo'],
            ]);
        }
        return json([
            'code' => 1,
            'msg'  => '创建群组成功',
            'data' => [
                'groupId' => $result['GroupId'],
            ],
        ]);
    }
}

위 코드는 종속성 주입을 통해 IMService 서비스를 주입하고 해당 서비스를 사용합니다. 컨트롤러에서 새로운 생성을 생성하려면 Tencent Cloud IM 그룹이 그룹 ID를 반환했습니다. 필요에 따라 다른 IM 작업을 수행할 수 있습니다.

5. 결론

이 기사에서는 실시간 통신 작업을 위해 ThinkPHP6에서 Tencent Cloud IM을 사용하는 방법을 소개합니다. 구성, 통합 및 종속성 주입을 통해 Tencent Cloud IM을 사용하여 그룹 생성, 메시지 전송 등 다양한 실시간 통신 작업을 쉽게 수행할 수 있습니다. 또한 인스턴트 메시징, 화상 통화 등과 같은 특정 요구에 따라 더 많은 IM 기능을 개발할 수 있습니다.

위 내용은 ThinkPHP6에서 실시간 통신 작업을 위해 Tencent Cloud IM을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.