讲师中心 微信公众号
AI工具推荐 视频效率加速

Workerman无法接收客户端消息怎么办

小婷酱_6626

小婷酱_6626

发布时间:2026-06-28 19:59:48

|

562人浏览过

|

来源于php中文网

原创

客户端消息onMessage收不到,根本原因是监听地址为127.0.0.1导致外部请求被内核丢弃,必须改为0.0.0.0:端口并完整重启;同时需确保协议一致(TCP/HTTP/WebSocket)、防火墙/安全组放行端口,并用ss -tuln和file_put_contents日志验证生效。

workerman无法接收客户端消息怎么办

Workerman服务端明明运行着,客户端也显示已连接,但发来的消息在onMessage里完全收不到,日志里连连接建立的痕迹都没有——这种情况不是代码漏写了回调,而是网络层或协议层根本没把数据送到Workerman手里。

检查监听地址是否对外暴露

打开你的启动文件(如start.php),找到Worker实例化那行,确认协议地址写的是0.0.0.0:端口号,而不是127.0.0.1:端口号。

这一步必须改:监听127.0.0.1只响应本机回环请求,外部设备(哪怕同局域网)发包过来,Linux内核直接丢弃,Workerman连SYN都收不到,更别说onMessage了。

改完不能只reload:执行php start.php stop && php start.php start完整重启,否则旧配置仍在内存中生效。

验证是否生效:运行ss -tuln | grep :你的端口,看到*:你的端口或0.0.0.0:你的端口才算成功;如果还显示127.0.0.1:你的端口,说明代码没重载或被其他配置覆盖。

确认客户端实际走的是TCP还是HTTP协议

方法一:用curl测试HTTP请求(适合启用了Http协议的Worker)
执行curl -X POST -d "msg=test" http://服务器IP:端口/,再看onMessage是否触发。如果没反应,大概率你启的是TCP Worker,却用HTTP方式发包——TCP Worker根本不解析HTTP头,收到的只是原始字节流,可能因缺少换行或协议头被直接忽略。

方法二:用telnet或netcat直连TCP端口(适合裸TCP Worker)
执行telnet 服务器IP 端口,连上后手动敲一行文字+回车。如果onMessage立刻打印出内容,说明TCP通路正常;如果无响应,问题不在Workerman逻辑层,而在网络或防火墙。

【关键前提】客户端和服务端协议类型必须严格一致:硬件模块(如ESP32)默认发裸TCP,你就不能用websocket://0.0.0.0:8080启动——握手失败会导致秒断,且onMessage根本不会被调用。

排查防火墙与云安全组拦截

第一步:在服务器本地执行telnet 127.0.0.1 端口,能通≠外部能通。loopback流量不经过firewalld或云安全组,这只是验证Workerman进程本身是否存活。

第二步:查当前开放端口sudo firewall-cmd --list-ports,若列表里没有你的端口,立即添加:sudo firewall-cmd --add-port=端口号/tcp --permanent,然后sudo firewall-cmd --reload。

第三步:如果是阿里云、腾讯云等,必须登录控制台进「安全组」,添加入方向规则,协议选TCP,端口填你的端口号,源IP先设为0.0.0.0/0用于测试——很多故障就卡在这一步,控制台规则没配,光改服务器防火墙没用。

Windows/macOS下跑WSL或VirtualBox时,宿主机系统防火墙也要关掉或加例外,否则流量在进虚拟网卡前就被拦了。

验证onMessage是否真被触发

在onMessage回调开头强行加一句日志:file_put_contents('/tmp/workerman.log', date('Y-m-d H:i:s') . " onMessage triggered\n", FILE_APPEND);。

然后让客户端发一次消息,立刻执行tail -f /tmp/workerman.log盯住输出。如果日志完全没新增,说明数据根本没进到Workerman事件循环;如果有时间戳但没打印$data内容,才是协议解析或编码问题。

注意:某些IDE调试器或PHP-FPM环境会屏蔽标准输出,echo/print_r可能看不见,但file_put_contents一定落盘,这是最可靠的触发验证手段。

检查连接是否被意外关闭

① 在onConnect回调里加日志,确认客户端连上来时Workerman有没有记录;
② 在onClose回调里加日志,看连接是主动断开还是被动踢出;
③ 如果onConnect有日志、onMessage始终没有,且onClose也没触发,基本可断定数据包在网络链路中丢失或被中间设备(如路由器、负载均衡)静默丢弃。

此时需用tcpdump抓包:tcpdump -i any port 端口号 -w debug.pcap,然后用Wireshark打开,过滤客户端IP,确认SYN→SYN-ACK→ACK三次握手是否完成,以及客户端发的DATA包服务端是否真的收到了。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
开发工具有哪些
开发工具有哪些

开发工具有:1、集成开发环境IDE;2、版本控制系统VCS;3、自动化构建工具;4、测试工具;5、代码分析工具。本专题为大家提供开发工具有哪些的相关的文章、下载、课程内容,供大家免费下载体验。

2766

2023.08.02

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

186

2026.05.20

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

202

2026.05.20

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

207

2026.05.20

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn