因项目只做socket客户端,不想用workerman或者swoole框架,简单实现ws PHP客户端

php 复制代码
D:\phpstudy_pro\Extensions\php\php7.4.3nts\composer require textalk/websocket
1、因项目只做socket客户端,不想用workerman或者swoole框架,简单实现ws PHP客户端
<?php
use WebSocket\Client as WsClient;

 private static $worker = null;
 
 public static function getClinet($url) {
        if (self::$worker == null) {
            self::$worker = new WsClient($url);
        }

        try {
            self::$worker->ping();
        } catch (\Exception $e) {
            self::$worker = null;
            return null;
        }

        return self::$worker;
    }
	
	public function sendToWorkerByWebSocket($taskModel) {
        $data = [
            'id' => $taskModel->id,
            'inst' => $taskModel->inst,
        ];
        $jsonData = json_encode($data);

        $url = sprintf('ws://%s:%d/ws', env('TCPWORKER_IP', '127.0.0.1'), env('TCPWORKER_PORT', 6));

        $client = self::getClinet($url);
        if ($client) {
            try {
                $client->send($jsonData);
                // $res = $client->receive();
                \Log::channel('websocket')->info('success:' .$jsonData);
            } catch (\Exception $e) {
                \Log::channel('websocket')->info($e->getMessage());
                \Log::channel('websocket')->info('fail:' .$jsonData);
            }
        } else {
            \Log::channel('websocket')->info('fail:ping不通');
        }

        return true;
    }

docs/Client.md · master · mirrors / Textalk / websocket-php · GitCode

相关推荐
七七软件开发13 小时前
直播 app 系统架构分析
java·python·小程序·系统架构·php
linux修理工16 小时前
使用 SecureCRT 连接华为 eNSP 模拟器的方法
服务器·开发语言·php
ZeroNews内网穿透16 小时前
ZeroNews内网穿透安全策略深度解析:构建企业级安全连接体系
java·运维·服务器·网络·python·安全·php
样子201817 小时前
PHP 之使用HTMLPurifier过滤XSS
开发语言·前端·php·xss
小塔猫20 小时前
详解 ThinkPHP6 中 Queue 与 Event 的结合实践:用户注册场景实现
前端·php
weixin_4374999220 小时前
【PHP类的基础概念:从零开始学面向对象】
开发语言·php
Ashlee_code2 天前
南太平洋金融基建革命:斐济-巴新交易所联盟的技术破局之路 ——从关税动荡到离岸红利,跨境科技如何重塑太平洋资本生态
java·开发语言·科技·金融·重构·web3·php
奔跑吧邓邓子2 天前
从0到1学PHP(十二):PHP 框架入门与项目实战
php·框架·laravel·项目实战·thinkphp·yii
爱掉发的小李2 天前
Linux 环境下 Docker 安装与简单使用指南
java·linux·运维·c++·python·docker·php
Q_Q5110082852 天前
python的驾校培训预约管理系统
开发语言·python·django·flask·node.js·php