最近一直再讀GateWayWorkerman源碼 遇到一點(diǎn)困惑希望得到幫助。在GatewayWorker/Lib/Gateway.php文件中有一些TCP的問(wèn)題不是很理解。
/**
* 發(fā)送buffer數(shù)據(jù)到網(wǎng)關(guān)
* @param string $address
* @param string $gateway_buffer
* @return bool
*/
protected static function sendBufferToGateway($address, $gateway_buffer)
{
// 有$businessWorker說(shuō)明是workerman環(huán)境,使用$businessWorker發(fā)送數(shù)據(jù)
if (self::$businessWorker) {
if (!isset(self::$businessWorker->gatewayConnections)) {
return false;
}
return self::$businessWorker->gatewayConnections->send($gateway_buffer, true);
}
// 非workerman環(huán)境
$gateway_buffer = self::$secretKey ? self::generateAuthBuffer() . $gateway_buffer : $gateway_buffer;
$flag = self::$persistentConnection ? STREAM_CLIENT_PERSISTENT | STREAM_CLIENT_CONNECT : STREAM_CLIENT_CONNECT;
$client = stream_socket_client("tcp://$address", $errno, $errmsg, self::$connectTimeout, $flag);
return strlen($gateway_buffer) == stream_socket_sendto($client, $gateway_buffer);
}
這個(gè)函數(shù)中非workerman環(huán)境 啟動(dòng)了一個(gè)Socket客戶端 發(fā)送完數(shù)據(jù)后不用調(diào)用關(guān)閉socket的命令么?
還有在 sendAndRecv函數(shù)中也沒(méi)有見(jiàn)到關(guān)閉Socket函數(shù)的命令,這些打開(kāi)過(guò)的客戶端Socket不需要顯示關(guān)閉么?
難道是等待心跳超時(shí)GateWay端來(lái)關(guān)閉么?