当前位置: 首页 > 工具软件 > php-ws > 使用案例 >

php使用workerman作为ws客户端的使用

郜振国
2023-12-01

我们知道,有些业务需要我们服务端来充当socket的客户端与其他服务端进行数据的持久交互,
那么利用workerman非常简单的就实现这个功能,下面看代码。

use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;

$worker = new Worker();

$worker->onWorkerStart = function($worker){

    $con = new AsyncTcpConnection('ws://IP:端口');

    $con->onConnect = function($con) {

        // 每60秒运行一次
        \Workerman\Lib\Timer::add(60, function () use ($con){
            $data = json_encode([
                'cmd' => 'pong',
            ]);
            $con->send($data);
        });
    };


    $con->onMessage = function($con, $data) { //当服务端推送数据的时候可以在此回调函数里接受到
        $data = json_decode($data, true);
        var_dump($data);
    };

    $con->onClose = function ($con) {
    	//这个是延迟断线重连,当服务端那边出现不确定因素,比如宕机,那么相对应的socket客户端这边也链接不上,那么可以吧1改成适当值,则会在多少秒内重新,我也是1,也就是断线1秒重新链接
        $con->reConnect(1);
    };

    $con->onError = function ($connection, $code, $msg) {
        echo "error $code $msg\n";
    };

    $con->connect();
};

Worker::runAll();
 类似资料: