이 글은 주로 GatewayWorker와 ThinkPHP 및 기타 프레임워크의 조합을 소개합니다. 이제 어느 정도 참고할만한 가치가 있습니다.
사용할 때 개발되었습니다. GatewayWorker 독자들이 가장 우려하는 부분은 기존 mvc 프레임워크(ThinkPHP Yii laravel 등)와의 통합 방법입니다. 다음은 공식적으로 권장되는 통합 방법입니다.
다이어그램 보기:
기존# #mvc 프레임워크 프로젝트및GatewayWorkerIndependent배포는 각각을 방해하지 않습니다. other# #
모든 비즈니스 로직은 게시/가져옵니다. 웹사이트 페이지mvc Framework
GatewayWorker에서 완료하세요. 클라이언트 수락 전송된 데이터, 즉 GatewayWorker는 비즈니스 로직을 처리하지 않습니다,GatewayWorker 은(는) # #단방향 푸시 채널으로 처리됩니다.
mvc 프레임워크필요할 때에만데이터를 브라우저에 적극적으로 푸시mvc 프레임워크에서만# ## #게이트웨이 API 호출(GatewayClient)푸시 완료## 구체적인 구현 단계# #1, # #웹사이트 페이지
GatewayWorkerwebsocket 연결2. GatewayWorker는페이지에서 시작된 연결을 발견했습니다.,
연결에 해당하는 client_id이웹사이트 페이지로 전송됩니다. # #3,웹사이트 페이지수신됨client_id
# #Ajax 요청 트리거(bind.php
라고 가정)
client_id를 mvc 백엔드로 보내기# #4, mvc backendbind.php
client_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的接口Gateway::sendToUid Gateway::sendToGroup
를 받은 후사용GatewayClient
Gateway::bindUid($client_id, $uid)
will# #
client_id는 현재 uid
Gateway::joinGroup($client_id, $group_id)
을 사용하여 추가할 수도 있습니다. client_id를 해당 그룹화
5에 추가합니다. 페이지에서 시작된 모든 요청은 메시지
# 전송을 포함하여 통합 처리를 위해 mvc 프레임워크에 직접 게시/가져옵니다. ### ##6. mvc 프레임워크의 비즈니스 프로세스 중에 ####은 ## uid## 또는 ##으로 데이터를 보내야 합니다. 그룹 ### ###, GatewayClient 인터페이스######Gateway::sendToUid #### ####Gateway::sendToGroup### ###
##보내기를 기다려주세요########## 샘플 코드####### GatewayWorker 조각### #GatewayWorker Events.php 코드(onConnect 콜백 설정 하나만)##
'init', 'client_id' => $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 || ''; switch(type){ // Events.php中返回的init类型的消息,将client_id发给后台进行uid绑定 case 'init': // 利用jquery发起ajax请求,将client_id发给后端进行uid绑定 $.post('./bind.php', {client_id: data.client_id}, function(data){}, 'json'); break; // 当mvc框架调用GatewayClient发消息时直接alert出来 default : alert(e.data); } };##### mvc 백엔드 uid 바인딩 코드 조각####bind.php(GatewayClient를 사용하여 바인딩)##
##### mvc 백엔드 메시지 코드 조각####send_message.php (GatewayClient를 사용하여 보내기)##注意
以上仅是mvc框架与GatewayWorker官方推荐的结合方式,并不是强制使用此方式,开发者可以自由变化选择结合方式以适应自己的业务需求。
当然也可以采用客户端与GatewayWorker直接双向通讯的方式完成业务通讯。以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
위 내용은 GatewayWorker와 ThinkPHP의 결합 및 기타 프레임워크 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!