首页 > 其他分享 >swoole4 websocket + pdo连接池

swoole4 websocket + pdo连接池

时间:2024-07-19 20:19:34浏览次数:13  
标签:function pdo websocket WebSocket frame swoole4 ws fd

<?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();

 

标签:function,pdo,websocket,WebSocket,frame,swoole4,ws,fd
From: https://www.cnblogs.com/dream-meng/p/18312298

相关文章

  • 前端WebSocket的方法封装
    一、封装方法在项目根目录src下的utils中新增webSocketManager.js封装文件,代码内容如下://webSocketManager.js/**WebSocketMessenger封装类*/classWebSocketManager{constructor(url=null,userId=null,receiveMessageCallback=null){this.socket=nul......
  • npm/yarn/pnpm install失败:ERR_PNPM_NO_VERSIONS No versions available for uWebSock
    ERR_PNPM_NO_VERSIONS NoversionsavailableforuWebSockets.js.Thepackagemaybeunpublished.我在新项目中想要切换包管理器从yarn到pnpm的时候,删除node_modules和yarn.lock之后,pnpminstall竟然提示这个包可能没发布。我觉得这个不可能,都需要使用了,怎么可能没发......
  • 实现基于Spring Boot和WebSockets的实时通讯应用
    实现基于SpringBoot和WebSockets的实时通讯应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!实时通讯应用在现代互联网服务中越来越重要。使用WebSocket可以实现客户端和服务器之间的双向通讯,从而大大提高实时性。本文将介绍如何使用SpringBoot和Web......
  • Socket、WebSocket 和 MQTT 的区别
    Socket协议定义:操作系统提供的网络通信接口,抽象了TCP/IP协议,支持TCP和UDP。特点:通用性:不限于Web应用,适用于各种网络通信。协议级别:直接使用TCP/UDP,需要手动管理连接和数据传输。实现复杂性:需要编写代码处理连接、数据传输和错误。使用场景:实时通信(聊天应用)、文件传输......
  • SpringBoot-集成 webSocket
    1.WebSocket简介2.springboot集成javax注解方式pom<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>配置类/*****blog.coder4j.cn*......
  • websocket的基本使用,与消息推送的一般设计
    本文章需要先阅读前面写的Bus事件,传送门:https://editor.csdn.net/md/?articleId=139666035//Bus事件,传送门:https://editor.csdn.net/md/?articleId=139666035importBusfrom"@/utils/Bus";//全局config的ws异常事件名import{websocketErrorEventName}from"@/conf......
  • thinkPHP+swoole扩展搭建一个websocket连接聊天室(简易版)
    1.服务器搭建好宝塔面板,并开放用于连接websocket的端口:例如9502 2.本地准备好连接的文件,以thinkPHP举例:(1)根目录下的Websocket.php文件(2)前端index入口文件添加test()方法,然后在view目录里添加相应的test.html  test()方法: test.html:  3.打开宝塔面板,放行9502......
  • 使用Java实现WebSocket通信
    使用Java实现WebSocket通信大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何使用Java实现WebSocket通信,WebSocket是一种在单个TCP连接上进行全双工通信的协议,非常适合实时数据传输。1.WebSocket简介WebSocket协议在Web开发中广泛应用,......
  • websocket-会话保持
    MarkdownExamplewebsocket-会话保持什么是websocket#数据以二进制传输的WebSocket是一种协议,用于在Web应用程序中创建实时、双向的通信通道。WebSocket协议本身并不提供安全性和加密功能为了提供安全的WebSocket通信,可以在WebSocket连接上加入TLS或DTLS(基于UDP......
  • 【java】实现sse调用websocket接口,忽略wss证书并控制sse吐字速度
    maven<dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.3</version></dependency>AsyncConfigpackag......