106 lines
2.8 KiB
PHP
106 lines
2.8 KiB
PHP
|
<?php
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Bwsaas
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Copyright (c) 2015~2020 http://www.buwangyun.com All rights reserved.
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Gitee ( https://gitee.com/buwangyun/bwsaas )
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Author: buwangyun <hnlg666@163.com>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Date: 2020-9-28 10:55:00
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
|
|||
|
namespace bw\gatewayworker;
|
|||
|
use GatewayClient\Gateway;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/** gatewayworker 客户端 composer require workerman/gatewayclient , composer require textalk/websocket
|
|||
|
* Class Client
|
|||
|
* @package app\bwmall\model
|
|||
|
*/
|
|||
|
class Client
|
|||
|
{
|
|||
|
|
|||
|
protected $identity = '';
|
|||
|
|
|||
|
protected $data = [];
|
|||
|
|
|||
|
protected $token_data = [];
|
|||
|
|
|||
|
protected $entity = null;
|
|||
|
|
|||
|
protected $config = [];
|
|||
|
|
|||
|
protected $connection = null;
|
|||
|
|
|||
|
public function __construct($identity = '',$param=[])
|
|||
|
{
|
|||
|
$this->identity = $identity;
|
|||
|
$this->data = $param;
|
|||
|
$identify = "\\bw\\gatewayworker\\" . ucfirst(camelize($this->identity));
|
|||
|
if (!class_exists($identify)) {
|
|||
|
// 连接身份不存在
|
|||
|
|
|||
|
}
|
|||
|
$this->config['register_address'] = config('site.gateway_register_address');
|
|||
|
$this->entity = new $identify($this, $this->data);
|
|||
|
$this->token_data = $this->entity()->getToken($this->data);
|
|||
|
//发起连接
|
|||
|
$this->connection();
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public function __destruct(){
|
|||
|
$this->closeConnection();
|
|||
|
}
|
|||
|
|
|||
|
public function closeConnection(){
|
|||
|
if($this->connection) $this->connection->close();
|
|||
|
return $this;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public function setConfig($options=[]){
|
|||
|
$this->config = array_merge($this->config,$options);
|
|||
|
return $this;
|
|||
|
}
|
|||
|
|
|||
|
public function connection($options=[]){
|
|||
|
$this->setConfig($options);
|
|||
|
$live_play_socket = $this->config['register_address'];
|
|||
|
$params = $this->token_data ? '?'.http_build_query($this->token_data) : '';
|
|||
|
$url=$live_play_socket.$params; //服务地址
|
|||
|
$this->connection = new \WebSocket\Client($url); //实例化\
|
|||
|
return $this;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public function message($method, $parameters){
|
|||
|
$res= $this->entity()->{$method}(...$parameters);
|
|||
|
$this->connection->send(json_encode($res)); //发送数据
|
|||
|
// var_dump(json_encode($res));
|
|||
|
return $this; //接收数据
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
public function entity() {
|
|||
|
return $this->entity;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// 代理身份相关的方法
|
|||
|
public function __call($method, $parameters)
|
|||
|
{
|
|||
|
return $this->entity()->{$method}(...$parameters);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|