swoole 安装 搭建tcp服务器和websocket
admin
2023-01-28 11:37:48
0

1、安装swoole
wget https://github.com/swoole/swoole-src/archive/v1.9.1-stable.tar.gz
tar zxvf v1.9.1-stable.tar.gz
cd swoole-src-1.9.1-stable
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
2、配置php支持swoole
vi /usr/local/php/etc/php.ini
添加
extension=swoole.so
3、重启php-fpm
service php-fpm restart
在phpinfo页面可以看到关于swoole的选项,说明安装成功。

4.搭建Echo服务器
服务端 Server
创建一个Server.php文件并输入如下内容:

// Server
class Server
{
    private $serv;

    public function __construct() {
        $this->serv = new swoole_server("0.0.0.0", 9501);
        $this->serv->set(array(
            'worker_num' => 8,
            'daemonize' => false,
        ));

        $this->serv->on('Start', array($this, 'onStart'));
        $this->serv->on('Connect', array($this, 'onConnect'));
        $this->serv->on('Receive', array($this, 'onReceive'));
        $this->serv->on('Close', array($this, 'onClose'));

        $this->serv->start();
    }

    public function onStart( $serv ) {
        echo "Start\n";
    }

    public function onConnect( $serv, $fd, $from_id ) {
        $serv->send( $fd, "Hello {$fd}!" );
    }

    public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
        echo "Get Message From Client {$fd}:{$data}\n";
        $serv->send($fd, $data);
    }

    public function onClose( $serv, $fd, $from_id ) {
        echo "Client {$fd} close connection\n";
    }
}
// 启动服务器 Start the server
$server = new Server();

客户端 Client
创建一个Client.php文件并输入如下内容:

client = new swoole_client(SWOOLE_SOCK_TCP);
    }

    public function connect() {
        if( !$this->client->connect("127.0.0.1", 9501 , 1) ) {
            echo "Error: {$this->client->errMsg}[{$this->client->errCode}]\n";
        }

        fwrite(STDOUT, "请输入消息 Please input msg:");  
        $msg = trim(fgets(STDIN));
        $this->client->send( $msg );

        $message = $this->client->recv();
        echo "Get Message From Server:{$message}\n";
    }
}

$client = new Client();
$client->connect();

运行 Run it!
在Terminal下执行命令php Server.php即可启动服务器,在另一个Terminal下执行php Client.php,输入要发送的内容,即可发送消息到服务器,并收到来自服务器的消息。

websocket:

$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);

$server->on('open', function (Swoole\WebSocket\Server $server, $request) {
    echo "server: handshake success with fd{$request->fd}\n";
});

$server->on('message', function (Swoole\WebSocket\Server $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
    $server->push($frame->fd, "this is server");
});

$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});

$server->start();

相关内容

热门资讯

玩家分享攻略“老友内蒙古麻将开... 网上科普关于“老友内蒙古麻将有没有挂”话题很是火热,小编也是针对老友内蒙古麻将作*弊开挂的方法以及开...
最新引进“可乐麻将开挂神器?”... 最新引进“可乐麻将开挂神器?”(确实真的有挂)您好,可乐麻将这个游戏其实有挂的,确实是有挂的,需要了...
终于明白“乐逍遥跑胡子有挂吗?... 您好:乐逍遥跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
最新引进“情怀莆仙真的有挂吗?... 家人们!今天小编来为大家解答情怀莆仙透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
终于了解“战皇牛牛开挂神器?”... 家人们!今天小编来为大家解答战皇牛牛透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
玩家分享攻略“新三哥玩十三张开... 家人们!今天小编来为大家解答新三哥玩十三张透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪...
【第一资讯】“微乐安徽麻将真的... 您好:微乐安徽麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
今日重磅消息“心悦麻将有没有挂... 您好:心悦麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
今日重大消息“闽乐茶楼到底有挂... 有 亲,根据资深记者爆料闽乐茶楼是可以开挂的,确实有挂(咨询软件无需打开...
玩家分享攻略“闽游麻将拼多多辅... 玩家分享攻略“闽游麻将拼多多辅助器?”(太坑了原来有挂)您好,闽游麻将拼多多这个游戏其实有挂的,确实...