Easy Swoole 1.2 搭建Echo服务器 笔记

对照Easy Swoole 教程开始学习

学习参考书 搭建Echo服务器

期间存在问题记录一下:

**问题: **

现在用的是swoole 1.8.6 版本,出现“ERROR swFactoryProcess_finish (ERROR 1004): send 66 byte failed, because session#134 is closed.”,后,进程挂掉。

答 :
new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP); 我让客户端使用长连接去创建,就没有报错了

**_客户端更改代码如下: _**
    class Client{
    
        private $client;
    
        public function __construct() {
            $this->client = new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP);
        }
    
        public function connect() {
    
            if( !$this->client->connect("127.0.0.1", 9503 , 1) ) {
                echo "Error: {$this->client->errMsg}[{$this->client->errCode}]\n";
            }
                        
            fwrite(STDOUT, "请输入消息:");  
            $msg = trim(fgets(STDIN));
            $this->client->send( $msg );
                        
            //接收第一次 
            $message = $this->client->recv();
            echo "Get Message From Server:{$message}\n";
            $this->listen();
        }
    
        //监听服务端消息
        public function listen() {
    
            $i = 1;
            while (true) {
                //接收第二次 
                $message = $this->client->recv();
                echo "I say :{$message}\n";
                sleep(1);
                $i++;
                if($i > 100) return true;
            }
        }
    }

下面监听的原因是 客户端源代码 仅监控了一次服务端 返回输出
如果需要继续接收返回输出需要做到持续获取返回值;
先写到这 趁着年前有时间抓紧学习一下

相关文章

发表新评论