windows系统下,两个work之间通信问题,目前awork和a客户端通信没问题,bwork和b客户端通信没问题
求解答
//awork
$ws = new Worker("websocket://0000:2346");
define('Heartbeat',55);
$ws->count = 1;
$ws->uidConnections = array();
$ws->onWorkerStart = function ($ws){
//设置一个 间隔 1秒的定时
Timer::add(1,function ()use($ws){
$time_now = time();
foreach($ws->connections as $connection) {
if (empty($connection->lastMessageTime)) {
$connection->lastMessageTime = $time_now;
continue;
}
if ($time_now - $connection->lastMessageTime > Heartbeat) {
$connection->close();
}
}
});
$text_worker = new Worker('Text://0000:5656');
$ws->textWorker = $text_worker;
$text_worker->listen();
};
$ws->onMessage = function($connection, $data)
{
global $ws;
$connection->lastMessageTime = time();
if(!isset($connection->uid))
{
if(intval($data))
{
$connection->uid = $data;
echo $connection->uid."已上线\n";
$ws->uidConnections[$connection->uid] = $connection;
}else{
echo $connection->uid.$data;
}
return ;
}else{
$sid= $connection->uid;
$con = new mysqli($server, $db_username, $db_password,$db_name);
$stm = $con->prepare('select m.id
from manage m where m.aid=?
;');
$stm->bind_param('s', $sid);
$stm->execute();
$result = $stm ->get_result();
if (mysqli_num_rows($result) >0) {
while ($row = mysqli_fetch_assoc($result)){
$mid=$row["id"];
}
}
echo $mid;//这里有数据,下面报错
global $text_worker;
$text_worker->onMessage = function($connection, $mid)
{
$connection->send($mid);
echo $mid;
};
}
};
//bwork
$ws2->onMessage = function($connection, $data)
{
global $ws2;
$connection->lastMessageTime = time();
if(!isset($connection->mid))
{
if(intval($data))
{
$connection->mid = $data;
echo $connection->mid."已上线\n";
$ws2->midConnections[$connection->mid] = $connection;
}else{
echo $connection->mid.$data;
}
return ;
}else{
$buffer= $connection->mid;
echo $connection->mid.$data;
$client = stream_socket_client("tcp://0000:5656");
// text 协议为字符串末尾加一个换行符 \n
echo $data;
fwrite($client, $data."\n");
}
};
Attempt to assign property "onMessage" on null i
$ws2 没定义
感谢。感觉错误比较多。今天仔细查看了文档。研究gatewaywork中。。。