<?php
declare(strict_types=1);
namespace app\api\controller\yy;
use app\common\controller\Api;
use Swoole\Coroutine;
use Swoole\Database\PDOConfig;
use Swoole\Database\PDOPool;
use Swoole\Runtime;
use think\Controller;
class Websocket{
protected $pool = null;
public function __construct(){
//创建WebSocket Server对象,监听0.0.0.0:9502端口。
$ws = new \Swoole\WebSocket\Server('0.0.0.0', 9307);
$this->pool = new PDOPool((new PDOConfig)
->withHost('')
->withPort(3306)
// ->withUnixSocket('/tmp/mysql.sock')
->withDbName('')
->withCharset('utf8mb4')
->withUsername('')
->withPassword('')
);
//监听WebSocket连接打开事件。
$ws->on('Open', function ($ws, $request) {
$ws->push($request->fd, "hello, welcome\n");
});
//监听WebSocket消息事件。
$ws->on('Message', function ($ws, $frame) {
echo "Message: {$frame->data}\n";
$this->pdo();
$ws->push($frame->fd, "server: {$frame->data}");
});
//监听WebSocket连接关闭事件。
$ws->on('Close', function ($ws, $fd) {
echo "client-{$fd} is closed\n";
});
$ws->start();
}
public function pdo()
{
$pdo = $this->pool->get();
$statement = $pdo->query("SELECT * from ***")->fetch();
var_dump($statement);
$this->pool->put($pdo);
}
}
new Websocket();