因项目只做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

相关推荐
Le_ee5 小时前
pikachu——php反序列化
网络安全·靶场·php·pikachu·php反序列
开开心心就好15 小时前
电脑扩展屏幕工具
java·开发语言·前端·电脑·php·excel·batch
AI风老师21 小时前
通信网络基础概念
开发语言·网络·php
链上Sniper1 天前
区块链架构深度解析:从 Genesis Block 到 Layer 2
开发语言·网络·架构·区块链·php
hymuuuu1 天前
【源码】研学报名小程序开发功能分析案例
mysql·php·需求分析
亿坊电商1 天前
PHP框架在内容管理系统开发中的优势:效率、安全与扩展性!
开发语言·安全·php
开***能1 天前
Modbus TCP转DeviceNet网关配置温控仪配置案例
网络协议·tcp/ip·php
黑眼圈的小熊猫1 天前
项目-- Json-Rpc框架
rpc·json·php
没有黑科技2 天前
如何区分5G网络基站是SA或NSA?
网络·5g·php
zorro_z2 天前
PHP语法基础篇:变量与数据类型
php