찾다
백엔드 개발PHP 튜토리얼GatewayWorker와 ThinkPHP의 결합 및 기타 프레임워크 소개

이 글은 주로 GatewayWorker와 ThinkPHP 및 기타 프레임워크의 조합을 소개합니다. 이제 어느 정도 참고할만한 가치가 있습니다.

사용할 때 개발되었습니다. GatewayWorker 독자들이 가장 우려하는 부분은 기존 mvc 프레임워크(ThinkPHP Yii laravel 등)와의 통합 방법입니다. 다음은 공식적으로 권장되는 통합 방법입니다.

다이어그램 보기:

## 일반 원칙

기존# 🎜 🎜#mvc 프레임워크 프로젝트GatewayWorkerIndependent배포는 각각을 방해하지 않습니다. other# 🎜🎜#

모든 비즈니스 로직 은 게시/가져옵니다. 웹사이트 페이지 mvc Framework

GatewayWorker

에서 완료하세요. 클라이언트 수락 전송된 데이터 , 즉 GatewayWorker는 비즈니스 로직을 처리하지 않습니다 , GatewayWorker 은(는) #🎜 🎜#단방향 푸시 채널으로 처리됩니다.

mvc 프레임워크필요할 때에만 데이터를 브라우저에 적극적으로 푸시mvc 프레임워크에서만# 🎜🎜##🎜🎜 #게이트웨이 API 호출(GatewayClient)푸시 완료## 구체적인 구현 단계#🎜 🎜#1, # 🎜🎜#웹사이트 페이지

생성됨

GatewayWorker websocket 연결2. GatewayWorker는 페이지에서 시작된 연결을 발견했습니다. ,

연결에 해당하는 client_id

웹사이트 페이지로 전송됩니다. #🎜🎜 #3, 웹사이트 페이지수신됨 client_id

#🎜 🎜#Ajax 요청 트리거(bind.php라고 가정)

client_id를 mvc 백엔드로 보내기 #🎜 🎜#4, mvc backendbind.phpclient_idbind.php)将client_id发到mvc后端

4、mvc后端bind.php收到client_id后利用GatewayClient调用Gateway::bindUid($client_id, $uid)client_id与当前uid(用户id或者客户端唯一标识)绑定。如果有群组、群发功能,也可以利用Gateway::joinGroup($client_id, $group_id)将client_id加入到对应分组

5、页面发起的所有请求都直接post/get到mvc框架统一处理,包括发送消息

6、mvc框架处理业务过程中需要向某个uid或者某个群组发送数据时,直接调用GatewayClient的接口<span style="color: #ff0000;"><strong><span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Gateway::sendToUid</span></span> </strong><span style="text-decoration: underline; color: #000000;"><strong>Gateway::sendToGroup</strong></span></span>를 받은 후 사용 GatewayClient

Call

Gateway::bindUid($client_id, $uid)

will# 🎜🎜#

client_id는 현재 uid

(사용자 ID 또는 클라이언트 고유 식별자)에 바인딩됩니다. 그룹 또는 그룹 전송 기능이 있는 경우

Gateway::joinGroup($client_id, $group_id)

을 사용하여 추가할 수도 있습니다. client_id를 해당 그룹화

5에 추가합니다. 페이지에서 시작된 모든 요청은 메시지

# 전송을 포함하여 통합 처리를 위해 mvc 프레임워크에 직접 게시/가져옵니다. 🎜🎜##🎜🎜# #🎜🎜#6. mvc 프레임워크의 비즈니스 프로세스 중에 #🎜🎜##🎜🎜#은 #🎜🎜# uid#🎜🎜# 또는 #🎜🎜#으로 데이터를 보내야 합니다. 그룹 #🎜🎜## 🎜🎜##🎜🎜#, GatewayClient 인터페이스 #🎜🎜##🎜🎜##🎜🎜#<span style="color: #000000; 텍스트 장식: 밑줄 ;">Gateway::sendToUid #🎜🎜##🎜🎜# #🎜🎜#<span style="text-꾸밈: 밑줄 색상: #000000;">#🎜🎜#Gateway::sendToGroup#🎜🎜## 🎜🎜##🎜🎜# </span></span>#🎜🎜#보내기를 기다려주세요#🎜🎜##🎜🎜##🎜🎜##🎜🎜### 샘플 코드#🎜🎜##🎜🎜#### GatewayWorker 조각#🎜🎜## 🎜🎜#GatewayWorker Events.php 코드(onConnect 콜백 설정 하나만)#🎜🎜#
<?php
use \GatewayWorker\Lib\Gateway;class Events
{    // 当有客户端连接时,将client_id返回,让mvc框架判断当前uid并执行绑定    public static function onConnect($client_id)
    {
        Gateway::sendToClient($client_id, json_encode(array(            &#39;type&#39;      => &#39;init&#39;,            &#39;client_id&#39; => $client_id
        )));
    }    // GatewayWorker建议不做任何业务逻辑,onMessage留空即可    public static function onMessage($client_id, $message)
    {

    }
}
#🎜🎜#### 웹사이트 페이지 js 조각#🎜🎜#
/**
 * 与GatewayWorker建立websocket连接,域名和端口改为你实际的域名端口,
 * 其中端口为Gateway端口,即start_gateway.php指定的端口。
 * start_gateway.php 中需要指定websocket协议,像这样
 * $gateway = new Gateway(websocket://0.0.0.0:7272);
 */
ws = new WebSocket("ws://your_domain.com:7272");// 服务端主动推送消息时会触发这里的onmessage
ws.onmessage = function(e){    // json数据转换成js对象    var data = eval("("+e.data+")");    var type = data.type || &#39;&#39;;    switch(type){        // Events.php中返回的init类型的消息,将client_id发给后台进行uid绑定        case &#39;init&#39;:            // 利用jquery发起ajax请求,将client_id发给后端进行uid绑定
            $.post(&#39;./bind.php&#39;, {client_id: data.client_id}, function(data){}, &#39;json&#39;);            break;        // 当mvc框架调用GatewayClient发消息时直接alert出来        default :
            alert(e.data);
    }
};
#🎜🎜#### mvc 백엔드 uid 바인딩 코드 조각#🎜🎜##🎜🎜#bind.php(GatewayClient를 사용하여 바인딩)#🎜🎜#
<?php//加载GatewayClient。关于GatewayClient参见本页面底部介绍require_once &#39;/your/path/GatewayClient/Gateway.php&#39;;// GatewayClient 3.0.0版本开始要使用命名空间use GatewayClient\Gateway;// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
Gateway::$registerAddress = &#39;127.0.0.1:1236&#39;;// 假设用户已经登录,用户uid和群组id在session中
$uid      = $_SESSION[&#39;uid&#39;];
$group_id = $_SESSION[&#39;group&#39;];// client_id与uid绑定
Gateway::bindUid($client_id, $uid);// 加入某个群组(可调用多次加入多个群组)
Gateway::joinGroup($client_id, $group_id);
#🎜🎜#### mvc 백엔드 메시지 코드 조각#🎜🎜##🎜🎜#send_message.php (GatewayClient를 사용하여 보내기)#🎜🎜#
<?php//加载GatewayClient。关于GatewayClient参见本页面底部介绍require_once &#39;/your/path/GatewayClient/Gateway.php&#39;;// GatewayClient 3.0.0版本开始要使用命名空间use GatewayClient\Gateway;// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
Gateway::$registerAddress = &#39;127.0.0.1:1236&#39;;// 向任意uid的网站页面发送数据
Gateway::sendToUid($uid, $message);// 向任意群组的网站页面发送数据
Gateway::sendToGroup($group, $message);

注意

以上仅是mvc框架与GatewayWorker官方推荐的结合方式,并不是强制使用此方式,开发者可以自由变化选择结合方式以适应自己的业务需求。


当然也可以采用客户端与GatewayWorker直接双向通讯的方式完成业务通讯。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

Yii1.1框架关于日志配置的使用

用laravel dingo api插件库创建api的方法

위 내용은 GatewayWorker와 ThinkPHP의 결합 및 기타 프레임워크 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP : 데이터베이스 및 서버 측 로직 처리PHP : 데이터베이스 및 서버 측 로직 처리Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

PHP 및 Python : 코드 예제 및 비교PHP 및 Python : 코드 예제 및 비교Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP 실행 : 실제 예제 및 응용 프로그램PHP 실행 : 실제 예제 및 응용 프로그램Apr 14, 2025 am 12:19 AM

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP : 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다PHP : 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다Apr 14, 2025 am 12:15 AM

PHP를 사용하면 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다. 1) HTML을 포함하여 컨텐츠를 동적으로 생성하고 사용자 입력 또는 데이터베이스 데이터를 기반으로 실시간으로 표시합니다. 2) 프로세스 양식 제출 및 동적 출력을 생성하여 htmlspecialchars를 사용하여 XSS를 방지합니다. 3) MySQL을 사용하여 사용자 등록 시스템을 작성하고 Password_Hash 및 전처리 명세서를 사용하여 보안을 향상시킵니다. 이러한 기술을 마스터하면 웹 개발의 효율성이 향상됩니다.

PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다Apr 14, 2025 am 12:13 AM

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP의 지속적인 관련성 : 여전히 살아 있습니까?PHP의 지속적인 관련성 : 여전히 살아 있습니까?Apr 14, 2025 am 12:12 AM

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구