// 建立socket連接到內(nèi)部推送端口
$client = stream_socket_client('tcp://192.168.31.214:1230', $errno, $errmsg);
var_dump($errno, $errmsg);
// 推送的數(shù)據(jù),包含uid字段,表示是給這個uid推送
$data = array('action'=>'sendToAll', 'info'=>'哈哈哈哈哈哈哈');
// $data = array('action'=>'editUser', 'info'=>'哈哈哈哈哈哈哈');
// 發(fā)送數(shù)據(jù),注意5678端口是Text協(xié)議的端口,Text協(xié)議需要在數(shù)據(jù)末尾加上換行符
fwrite($client, json_encode($data)."\n");
// 讀取推送結(jié)果
$res = fread($client, 8192);
fclose($client);?//群發(fā)消息
case 'sendToAll':
$user_id = isset($message) ? $message : 0;
if (empty($user_id)) return self::format_return_message('error', '缺少參數(shù)');
Gateway::sendToAll(self::format_return_message('message', $message));
break;
如上代碼,如果去掉判斷直接發(fā)送給客戶端就正常,如果加了判斷那就不行,一會兒就超時(shí)了,請問這是什么情況?
這個很好理解吧,
// 讀取推送結(jié)果
$res = fread($client, 8192);客戶端這邊在等待服務(wù)端返回結(jié)果,然后服務(wù)端走到
if (empty($user_id)) return self::format_return_message('error', '缺少參數(shù)');的時(shí)候,并沒有給這個fread的客戶端推送結(jié)果,那fread就一直等待了,就超時(shí)了。
?
?
?