workerman可以連接的上,到是用GatewayWorker用前端鏈接的時(shí)候不行而且啟動(dòng)沒(méi)端口號(hào)
5.1 要那個(gè)教程干啥,tp官方有集成,
這是 config 里面的 gateway_worker.php
'businessWorker' => [
'name' => 'BusinessWorker',
'count' => 1,
//重寫Events類
'eventHandler' => 'app\worker\controller\GateWayMsg',
],
然后 GateWayMsg 代碼
<?php
namespace app\worker\controller;
use GatewayWorker\Lib\Gateway;
use think\worker\Events;
use Workerman\Lib\Timer;
use Workerman\Worker;
class GateWayMsg extends Events
{
/**
* onMessage 事件回調(diào)
* 當(dāng)客戶端發(fā)來(lái)數(shù)據(jù)(Gateway進(jìn)程收到數(shù)據(jù))后觸發(fā)
*
* @access public
* @param int $client_id
* @param mixed $data
* @return void
*/
public static function onMessage($client_id, $data)
{
$data = json_decode($data, true);
}
//
/**
* onClose 事件回調(diào) 當(dāng)用戶斷開連接時(shí)觸發(fā)的方法
*
* @param integer $client_id 斷開連接的客戶端client_id
* @return void
*/
public static function onClose($client_id)
{
GateWay::sendToAll("client[$client_id] logout\n");
}
/**
* onConnect 事件回調(diào)
* 當(dāng)客戶端連接上gateway進(jìn)程時(shí)(TCP三次握手完畢時(shí))觸發(fā)
*
* @access public
* @param int $client_id
* @return void
*/
public static function onConnect($client_id)
{
// 連接到來(lái)后,定時(shí)10秒關(guān)閉這個(gè)鏈接,需要10秒內(nèi)發(fā)認(rèn)證并刪除定時(shí)器阻止關(guān)閉連接的執(zhí)行
$auth_timer_id = Timer::add(10, function ($client_id) {
Gateway::closeClient($client_id);
}, array($client_id), false);
Gateway::updateSession($client_id, array('auth_timer_id' => $auth_timer_id));
}
public static function onWorkerStart(Worker $businessWorker)
{
parent::onWorkerStart($businessWorker); // TODO: Change the autogenerated stub
}
/**
* onWorkerStop 事件回調(diào)
* 當(dāng)businessWorker進(jìn)程退出時(shí)觸發(fā)。每個(gè)進(jìn)程生命周期內(nèi)都只會(huì)觸發(fā)一次。
*
* @param \Workerman\Worker $businessWorker
* @return void
*/
public static function onWorkerStop(Worker $businessWorker)
{
echo "WorkerStop\n";
}
}