当前位置: 首页 > news >正文

thinkphp6通过workerman使用websocket

安装workerman依赖

composer require topthink/think-worker

composer require topthink/think-worker=1.0.*  # 指定兼容版本‌:ml-citation{ref="1,7" data="citationList"}

在这里插入图片描述

config配置
config/worker.php

<?php
return [// 扩展自身需要的配置'host'                  => '0.0.0.0', // 监听地址'port'                  => 2346, // 监听端口'root'                  => '', // WEB 根目录 默认会定位public目录'app_path'              => '', // 应用目录 守护进程模式必须设置(绝对路径)'file_monitor'          => false, // 是否开启PHP文件更改监控(调试模式下自动开启)'file_monitor_interval' => 2, // 文件监控检测时间间隔(秒)'file_monitor_path'     => [], // 文件监控目录 默认监控application和config目录// 支持workerman的所有配置参数'name'                  => 'thinkphp','count'                 => 4,'daemonize'             => false,'pidFile'               => '',
];

config/gateway_worker.php

<?php
// +----------------------------------------------------------------------
// | yylAdmin 前后分离,简单轻量,免费开源,开箱即用,极简后台管理系统
// +----------------------------------------------------------------------
// | Copyright https://gitee.com/skyselang All rights reserved
// +----------------------------------------------------------------------
// | Gitee: https://gitee.com/skyselang/yylAdmin
// +----------------------------------------------------------------------
// +----------------------------------------------------------------------
// | Workerman设置 仅对 php think worker:gateway 指令有效
// +----------------------------------------------------------------------
use GatewayWorker\Lib\Gateway;return [// 扩展自身需要的配置'protocol'              => 'websocket', // 协议 支持 tcp udp unix http websocket text'host'                  => '0.0.0.0', // 监听地址'port'                  => 2348, // 监听端口'socket'                => '', // 完整监听地址'context'               => [], // socket 上下文选项'register_deploy'       => env('WORKER.register_deploy', true), // 是否需要部署register'businessWorker_deploy' => true, // 是否需要部署businessWorker'gateway_deploy'        => true, // 是否需要部署gateway'worker_class'   => 'app\common\service\workman\Events', // 自定义Workerman服务类名 支持数组定义多个服务// Register配置'registerAddress'       => env('WORKER.registerAddress', '127.0.0.1:1236'),// Gateway配置'name'                  => 'thinkphp','count'                 => 5,'lanIp'                 => env('WORKER.lanIp', '127.0.0.1'),'startPort'             => 2000,'daemonize'             => false,'pingInterval'          => 30,'pingNotResponseLimit'  => 0,'pingData'              => '{"type":"ping"}',// BusinsessWorker配置'businessWorker'        => ['name'         => 'BusinessWorker','count'        => 10,'eventHandler' => 'app\common\service\workman\Events','registerAddress' => array_unique([env('WORKER.registerAddress1', '127.0.0.1:1236'),env('WORKER.registerAddress2', '127.0.0.1:1236')]),],];

config/worker_server.php

<?php
return [// 扩展自身需要的配置'protocol'       => 'websocket', // 协议 支持 tcp udp unix http websocket text'host'           => '0.0.0.0', // 监听地址'port'           => 2345, // 监听端口'socket'         => '', // 完整监听地址'context'        => [], // socket 上下文选项
//    'worker_class'   => 'app\common\service\workman\Worker', // 自定义Workerman服务类名 支持数组定义多个服务// 支持workerman的所有配置参数'name'           => 'thinkphp','count'          => 4,'daemonize'      => false,'pidFile'        => '',// 支持事件回调// onWorkerStart'onWorkerStart'  => function ($worker) {},// onWorkerReload'onWorkerReload' => function ($worker) {},// onConnect'onConnect'      => function ($connection) {$connection->send('onConnect success: uid = ' . json_encode($connection->uid));},// onMessage'onMessage'      => function ($connection, $data) {$connection->send('onMessage success data = ' . json_encode($data));},// onClose'onClose'        => function ($connection) {},// onError'onError'        => function ($connection, $code, $msg) {echo "error [ $code ] $msg\n";},
];

前端链接示例

const socket = new WebSocket('ws://127.0.0.1:2346');
socket.onopen = () => console.log('连接成功‌:ml-citation{ref="6" data="citationList"}');
socket.onmessage = e => console.log('收到:', e.data);
// 发送数据示例
socket.send(JSON.stringify({ type: 'chat', msg: 'Hello' }))‌:ml-citation{ref="6,8" data="citationList"};

启动服务

php think worker start -d  # 后台运行‌:ml-citation{ref="5,8" data="citationList"}

开启 php think worker:gateway
停止 php think worker:gateway stop

查看状态
php think worker:gateway status

在这里插入图片描述

也可以通过宝塔守护进程启动

在这里插入图片描述

http://www.xdnf.cn/news/1433683.html

相关文章:

  • ArkUI核心功能组件使用(一)
  • 强化学习PPO/DDPG算法学习记录
  • 01 - 网页和web标准
  • Spring Boot数据脱敏方案
  • java-设计模式-5-创建型模式-建造
  • quant, 量化交易,合约,期货心得,短线交易心得
  • Vue3 + GSAP 动画库完全指南:从入门到精通,打造专业级网页动画
  • 人工智能与强化学习:使用OpenAI Gym进行项目开发
  • 【小白笔记】使用 robocopy 解决大文件复制难题:从踩坑到精通
  • 第四届可再生能源与电气科技国际学术会议(ICREET 2025)
  • 如何修改 Docker 默认网段(网络地址池)配置:以使用 10.x.x.x 网段为例
  • CH01-1.1 Exercise-Ordinary Differential Equation-by LiuChao
  • 【代码随想录day 22】 力扣 131.分割回文串
  • DevOps部署与监控
  • MATLAB矩阵及其运算(四)矩阵的运算及操作
  • 集群无法启动CRS-4124: Oracle High Availability Services startup failed
  • 数据库入门实战版
  • 基于YOLOv4的无人机视觉手势识别系统:从原理到实践
  • 货运系统源码 货运物流小程序 货运平台搭建 货运软件开发
  • C19T1
  • Elasticsearch常用DSL快速查询指南
  • Vue.js 中深度选择器的区别与应用指南
  • 从零开始学Vue3:Vue3的生命周期
  • 前端架构知识体系:常见图片格式详解与最佳实践
  • [密码学实战]逆向工程常见工具合集及下载地址(四十七)
  • 23种设计模式-抽象工厂模式
  • CICD实战(3) - 使用Arbess+GitLab+Hadess实现Java项目构建/上传制品库
  • qt使用笔记三之 QGraphicsView、QGraphicsScene 和 QGraphicsPixmapItem 详解
  • 大模型常用的数据类型FP32,BF16,FP16
  • 基于arm芯片的驱动开发——温湿度传感器dht11