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