現(xiàn)在我用workerman搭建了一個(gè)socket服務(wù)端,client.php客戶端作為微信公眾號的地址,現(xiàn)在服務(wù)端有個(gè)心跳檢測,數(shù)據(jù)是{"type":"ping"},我建立了長連接后接收服務(wù)端的socket數(shù)據(jù),我這樣寫的:
$in = '{"type":"test"}';
$out = '';
if(!socket_write($socket, $in, strlen($in))) {
$errStr = "socket_write() failed: reason: " . socket_strerror($socket);
echo http_text($FromUserName,$ToUserName,$errStr);exit;
}
$infoStr = '';
while($out = socket_read($socket, 8192)) {
$infoStr = "接收服務(wù)器回傳信息成功!\n";
$infoStr .= "接受的內(nèi)容為:".$out;
}
echo http_text($FromUserName,$ToUserName,$infoStr);//回復(fù)微信消息
socket_close($socket);
在while循環(huán)那里一直接收心跳數(shù)據(jù),下面的回復(fù)微信公從號的信息無法執(zhí)行,導(dǎo)致公眾號無法服務(wù),怎么能避免接收心跳數(shù)據(jù)呢?不限入死循環(huán),我把while循環(huán)去掉了,直接用$out = socket_read($socket, 8192);只要這句話也不行,想不明白,不知道為什么?請老大指點(diǎn)迷津。。。