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.pswp.cn/bicheng/95557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95557.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rust SQLx 開發指南:利用 Tokio 進行性能優化

在當今高并發的應用開發環境中&#xff0c;數據庫操作往往是性能瓶頸的主要來源之一。SQLx 作為一個純 Rust 編寫的異步 SQL 客戶端庫&#xff0c;通過與 Tokio 運行時深度集成&#xff0c;為開發者提供了處理數據庫 I/O 密集型操作的強大工具。本文將帶您深入了解如何利用這兩…

嵌入式硬件電路分析---AD采集電路

文章目錄摘要AD采集電路1AD采集電路2R77的真正作用是什么&#xff1f;理想與現實&#xff1a;為什么通常可以忽略R77的影響&#xff1f;摘要 AD采集 AD采集電路1 這是個人畫的簡化后的AD采集電路 這是一個AD檢測電路&#xff0c;R1是一個可變電阻&#xff0c;R2是根據R1的常用…

Python爬取nc數據

1、單文件爬取爬取該網站下的crupre.nc數據&#xff0c;如下使用requests庫&#xff0c;然后填寫網站的url&#xff1a;"http://clima-dods.ictp.it/regcm4/CLM45/crudata/"和需要下載的文件名&#xff1a;"crupre.nc"import requests import osdef downlo…

策略模式 + 工廠模式

策略模式&#xff1a;簡單來說解決的行為的封裝與選擇。如HandlerMapping&#xff0c;將 HTTP 請求映射到對應的處理器&#xff08;Controller 或方法&#xff09;。工廠模式&#xff1a;解決的是具有相同屬性的對象創建問題&#xff0c;如BeanFactory創建bean對象。解決的代碼…

Diamond基礎3:在線邏輯分析儀Reveal的使用

文章目錄1. 與ILA的區別2. 使用Reveal步驟3.Reveal注意事項4.傳送門1. 與ILA的區別 Reveal是Lattice Diamond集成開發環境用于在線監測信號的工具&#xff0c;ILA是xilinx的Vivado集成開發工具的在線邏輯分析儀&#xff0c;同Reveal一樣&#xff0c;均可以在項目運行過程中&am…

超適合程序員做知識整理的 AI 網站

這次要給大家分享一個超適合程序員做知識整理的 AI 網站 ——Notion AI&#xff0c;網址是Notion&#xff0c;它能把你隨手記的雜亂筆記、代碼片段、技術文檔&#xff0c;一鍵梳理成邏輯清晰的結構化內容&#xff0c;小索奇我用它整理 “Python 爬蟲知識點” 時&#xff0c;原本…

【 Selenium 爬蟲】2025年8月25日-pixabay 圖片采集

無惡意采集&#xff0c;取部分圖片用來做相冊測試的&#x1f604; 效果圖import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.la.selenium.utils.SeleniumUtil; import lombok.extern.slf4j.Slf4j; import o…

服務器托管需要注意什么事項?

服務器托管是企業IT基礎設施的關鍵環節&#xff0c;其穩定性和安全性直接影響業務連續性。需要注意下面這幾點&#xff01; 一、服務商與機房選擇 服務商資質 選擇持有ISP證書的合法服務商&#xff0c;優先考慮運營超5年、市場口碑佳的老牌公司&#xff0c;技術團隊需具備72…

微信小程序備忘

1.按鈕事件中想切換到tabBar中的鏈接用switchTab&#xff0c;不能用navigateTo&#xff1a;agentPage: function() { wx.switchTab({url: /pages/agent/agent}) },特別注意&#xff1a;微信小程序中所謂的自定義&#xff0c;并不是完全的自定義&#xff0c;在app.json中定義&a…

虛擬機NAT模式通過宿主機(Windows)上網不穩定解決辦法(無法上網)(將宿主機設置固定ip并配置dns)

文章目錄問題描述解決辦法分析**1. 問題的根本原因****(1) 宿主機動態IP的DNS配置問題****(2) NAT模式下的網絡依賴****(3) 自習室WiFi的潛在限制****2. 用戶操作的合理性分析****(1) 固定IP的作用****(2) 手動指定公共DNS的作用****3. 用戶懷疑的正確性****4. 其他可能原因的排…

基于 HTML、CSS 和 JavaScript 的智能圖像虛化系統

目錄 1 前言 2 技術實現 2.1 HTML&#xff1a;搭建頁面基礎結構 2.2 CSS&#xff1a;打造科技感視覺體驗 2.3 JavaScript&#xff1a;實現核心虛化功能 2.3.1 圖像上傳與初始化 2.3.2 實時虛化處理 2.3.3 圖像下載功能 3 完整代碼 4 運行結果 5 總結 1 前言 三大核…

PS更改圖像尺寸

新建文檔 1.左上角——新文件可以新建文檔2.文件——新建文檔3.快捷鍵CtrlN 對文件命名 輸入新文件名稱設置寬度和高度 設置文件的寬高&#xff0c;單位可以是像素、英寸、厘米等。還可以選擇文件方向或者是否使用畫板模式畫布背景色 一般顯示白色&#xff0c;也可以選擇其他顏…

分詞器詳解(一)

文章目錄&#x1f31f; 第0層&#xff1a;極簡版&#xff08;30秒理解&#xff09;核心公式生活比喻&#x1f4da; 第1層&#xff1a;基礎概念&#xff08;5分鐘理解&#xff09;1. 分詞器基礎1.1 分詞器的核心作用1.2 主流分詞算法對比2. 基礎實現2.1 BPE實現原理2.2 特殊標記…

推薦一個論文閱讀工具ivySCI

1.一些關于ivySCI的數據 &#xff08;摘自&#xff1a;吳焱紅&#xff0c;論文示范:ivySCI 在論文管理、閱讀和筆記中的體驗&#xff09; 1.科研人員花在文獻閱讀上的時間占總工作時間的 23%2.每年閱讀的文獻數量大概是 188 到 280 篇3.ivySCI 提供 Pad(iPad 和 Android) 和桌…

診斷服務器(Diagnostic Server)

在《SWS_Diagnostics.pdf》中,診斷服務器(Diagnostic Server) 是診斷管理(DM)的核心執行單元,聚焦 “軟件集群(SoftwareCluster)級診斷資源的獨立管控”,實現 UDS(ISO 14229-1)與 SOVD(ASAM 服務化診斷)的全流程診斷功能。以下結合文檔 7.3 節 “Diagnostic Serve…

如何開發一款高穩定、低延遲、功能全面的RTSP播放器?

一、引言&#xff1a;RTSP的價值與挑戰 RTSP&#xff08;Real-Time Streaming Protocol&#xff09;作為實時流媒體傳輸的核心協議&#xff0c;廣泛應用于安防監控、無人機回傳、教育互動、遠程醫療、單兵指揮等行業。它提供了 基于請求/響應機制的流媒體控制能力&#xff0c;…

數據結構——樹(03二叉樹,與路徑有關的問題,代碼練習)

文章目錄一、求二叉樹的值【層序遍歷實現】1.1右視圖1.2層最大值1.3層和1.4最底層的葉子結點的和1.5層平均值1.6最大層和的層號二、二叉樹的路徑2.1根節點到葉子節點&#xff0c;二叉樹的路徑2.2路徑的十進制之和 & 二進制之和2.3二叉樹里的路徑三、二叉樹的路徑23.1最長同…

Git配置:禁用全局HTTPS驗證

文章目錄Git配置&#xff1a;禁用全局HTTPS驗證什么是HTTPS驗證&#xff1f;為什么需要禁用HTTPS驗證&#xff1f;如何禁用全局HTTPS驗證&#xff1f;注意事項結論Git配置&#xff1a;禁用全局HTTPS驗證 在軟件開發和版本控制中&#xff0c;Git是一個不可或缺的工具。它幫助開…

【54頁PPT】基于DeepSeek的數據治理技術(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92796370/91778320 資料解讀&#xff1a;《基于DeepSeek的數據治理技術》 詳細資料請看本解讀文章的最后內容。 作為數據治理領域的資深研究者&#…

2025年最新 unityHub游戲引擎開發2d手機游戲和桌面游戲教程

設置開發編輯器 &#xff1a; 以下是一個簡化版的移動控制代碼&#xff0c;不依賴自定義輸入配置&#xff0c;直接使用 Unity 新輸入系統的默認綁定&#xff0c;并兼容手機端的 Joystick Pack 虛擬搖桿&#xff1a; SimplePlayerMovement using UnityEngine; using UnityEngi…