<?php
namespace process;
use Webman\Channel\Client;
use Workerman\Connection\TcpConnection;
use Workerman\Timer;
class Luckysheet
{
public function __construct()
{
}
//protected $connections = [];
protected string $uid = '';
public function onConnect(TcpConnection $connection)
{
$this->uid = uniqid();
echo "onConnect\n";
}
public function onWebSocketConnect(TcpConnection $connection, $http_buffer)
{
echo "onWebSocketConnect\n";
$data1 = '{"message":"連接成功","type":"0","status":"0"}';
$connection->send($data1);
$data2 = '{"data":"","message":"反饋以前操作信息","type":"4","status":"0"}';
$connection->send($data2);
}
public function onMessage(TcpConnection $connection, $data)
{
$return = '{"createTime":1661484194207,"returnMessage":"success","type":1,"status":"0"}';
if ($data == 'rub') {
//心跳不回復(fù)
} else {
Client::connect('127.0.0.1', 2206);
// 要訂閱的事件名稱(名稱可以為任意的數(shù)字和字符串組合)
$event_name = 'event_luckysheet';
// 發(fā)布某個自定義事件,訂閱這個事件的客戶端會收到事件數(shù)據(jù),并觸發(fā)客戶端對應(yīng)的事件回調(diào)
Client::publish($event_name, $data);
// 訂閱某個自定義事件并注冊回調(diào),收到事件后會自動觸發(fā)此回調(diào)
Client::on($event_name, function ($data) use ($connection) {
// var_dump($data);
// $connection->send($data . '1111111111111111111');
});
$connection->send($return);
}
}
public function onClose(TcpConnection $connection)
{
//斷開關(guān)閉句柄
// unset($this->connections[$connection->id]);
echo "onClose\n";
}
}
基于luckysheet做一個webman的后臺,但是Channel進(jìn)行進(jìn)程間的通信,自己接受的data,返回
{"createTime":1661484194207,"returnMessage":"success","type":1,"status":"0"}
然后吧接口的數(shù)據(jù)分發(fā)給其他連接端,是需要模仿gateway自己維護(hù)一個uid,帶到publish的$data里面
然后on的時候,在判斷是否是自己發(fā)送出去的,還是有什么別的方案?
當(dāng)連接進(jìn)來的客戶端發(fā)送請求的時候,