Gateway 代码相关问题求教!!!

我心飞扬

最近一直再读GateWayWorkerman源码 遇到一点困惑希望得到帮助。在GatewayWorker/Lib/Gateway.php文件中有一些TCP的问题不是很理解。

  /**
     * 发送buffer数据到网关
     * @param string $address
     * @param string $gateway_buffer
     * @return bool
     */
    protected static function sendBufferToGateway($address, $gateway_buffer)
    {
        // 有$businessWorker说明是workerman环境,使用$businessWorker发送数据
        if (self::$businessWorker) {
            if (!isset(self::$businessWorker->gatewayConnections)) {
                return false;
            }
            return self::$businessWorker->gatewayConnections->send($gateway_buffer, true);
        }
        // 非workerman环境
        $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);
    }

这个函数中非workerman环境 启动了一个Socket客户端 发送完数据后不用调用关闭socket的命令么?
还有在 sendAndRecv函数中也没有见到关闭Socket函数的命令,这些打开过的客户端Socket不需要显示关闭么?
难道是等待心跳超时GateWay端来关闭么?

3859 3 0
3个回答

walkor

可以复用,不关闭

  • 暂无评论
walkor
  • 暂无评论
我心飞扬

非常感谢!!!!!

  • 暂无评论
年代过于久远,无法发表回答
🔝