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

Hyperf WebSocket路由怎么配置

雨晨吖_2476

雨晨吖_2476

发布时间:2026-09-04 16:21:20

|

738人浏览过

|

来源于php中文网

原创

Hyperf WebSocket 路由必须通过 Router::addServer('ws', ...) 绑定到 server.php 中定义的 'ws' 实例,仅支持 GET 方法,路径需与 onHandShake 中 request_uri 严格一致,控制器须实现 OnOpen/OnMessage/OnClose 接口,中间件需在 middlewares.php 中按 server name 配置。

hyperf websocket路由怎么配置

路由必须绑定到 WebSocket Server 名称,不是 HTTP 那套

Hyperf 的 WebSocket 路由不走 Router::get()Router::post(),它依赖 Router::addServer() 显式挂载到某个 WebSocket server 实例上。这个实例的 name 必须和 config/autoload/server.php 里定义的 WebSocket server 的 name 完全一致,否则请求根本进不到 WebSocket 生命周期里。

  • config/autoload/server.php 中 WebSocket server 的 name'ws',那么路由就必须写 Router::addServer('ws', ...)
  • 如果改成了 'websocket''mixed',路由块也得同步改,否则 onHandShake 回调压根不会触发
  • 不能把 WebSocket 路由写在 HTTP 的 Router::get('/ws', ...) 里——那只是个普通 HTTP 接口,和 WebSocket 握手无关

路由闭包里只能用 Router::get(),不支持 POST/PUT 等方法

WebSocket 连接建立是通过 HTTP GET 请求发起的(带 Upgrade: websocket 头),所以路由定义只认 GET。你在 addServer() 闭包里写 Router::post()Router::any() 都无效,框架会忽略。

在SEO发布前,从路由清单生成XML网站地图和robots.txt
在SEO发布前,从路由清单生成XML网站地图和robots.txt

当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。

下载
  • 正确写法:Router::get('/', 'App\Controller\WebSocketController')
  • 路径支持变量,比如 /ws/{uid:\d+},但注意:这些参数只在 onOpen()$request 对象里可用,onMessage() 里拿不到
  • 不要指望用路由参数做鉴权主逻辑——握手阶段还没走完中间件,建议在 onOpen() 里手动校验或走 token 查询

控制器必须实现三个接口,且路径要匹配

路由指向的控制器类,必须同时实现 OnOpenInterfaceOnMessageInterfaceOnCloseInterface,缺一个,连接就会卡在握手后或断连异常。另外,onHandShake 回调默认只放行 / 或你显式配置的路径,如果路由是 /chat,但 onHandShake 里没判断 $request->server['request_uri'] === '/chat',Swoole 就会直接返回 400。

  • 检查 onOpen() 方法签名是否为 public function onOpen($server, Request $request): void
  • 确保 $request->server['request_uri'] 和路由路径一致,不一致就手动 return false 或 throw 异常
  • 若用注解方式(@OnOpen),需确认类上有 @WebSocketController,且该控制器被扫描到(检查 scan 配置)

别漏掉中间件注册点,middlewares.php 是独立入口

WebSocket 的中间件不走 HTTP 的全局中间件数组,它有自己的注册位置:config/autoload/middlewares.php,且必须以 server name 为键。如果你的 WebSocket server 名叫 'ws',中间件就得配成 'ws' => [AuthMiddleware::class],而不是塞进 'http' 或空数组里。

  • 中间件执行时机在 onHandShake 之后、onOpen 之前,可用于鉴权或拒绝非法连接
  • 中间件里不能调用 $response->withStatus() —— WebSocket 握手响应由 Swoole 底层控制,你只能 return false 终止握手
  • 如果中间件抛异常,Hyperf 默认返回 500,但客户端看到的是连接被重置,建议 catch 后显式 return false
实际部署时最容易被忽略的是:路由路径和 onHandShake 内部的 URI 判断必须严格一致,哪怕多一个斜杠或大小写不同,都会导致握手静默失败。Nginx 透传配置再完美,这一步错了一样连不上。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

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

WorkBuddy

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

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

豆包大模型

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

DeepSeek

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

相关专题

更多
Golang WebSocket与实时通信开发
Golang WebSocket与实时通信开发

本专题系统讲解 Golang 在 WebSocket 开发中的应用,涵盖 WebSocket 协议、连接管理、消息推送、心跳机制、群聊功能与广播系统的实现。通过构建实际的聊天应用或实时数据推送系统,帮助开发者掌握 如何使用 Golang 构建高效、可靠的实时通信系统,提高并发处理与系统的可扩展性。

175

2025.12.22

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

376

2026.01.19

Python WebSocket实时通信与异步服务开发实践
Python WebSocket实时通信与异步服务开发实践

本专题聚焦 Python 在实时通信场景中的开发实践,系统讲解 WebSocket 协议原理、长连接管理、消息推送机制以及异步服务架构设计。内容包括客户端与服务端通信实现、连接稳定性优化、消息队列集成及高并发处理策略。通过完整案例,帮助开发者构建高效稳定的实时通信系统,适用于聊天应用、实时数据推送等场景。

415

2026.03.18

WebSocket 前端开发与实战技巧
WebSocket 前端开发与实战技巧

聚焦 WebSocket 在前端项目中的工程化实践,涵盖原生 JavaScript WebSocket 连接的封装与状态管理、Vue 3 中 WebSocket 的 Composable 封装(useWebSocket)、React 中自定义 Hook 管理连接生命周期、心跳检测(Ping/Pong 定时器)与自动断线重连的实现策略、指数退避重连算法、消息序列化协议(JSON / Protobuf / MessagePack)的选型与性

368

2026.05.25

WebSocket发送和接收数据教程合集
WebSocket发送和接收数据教程合集

本专题整合了WebSocket发送与接收数据教程合集,阅读专题下面的文章了解更多详细内容。

281

2026.05.25

Hyperf协程并发编程实操指南
Hyperf协程并发编程实操指南

本专题深度解析 Hyperf 协程底层机制,解决协程环境下全局变量污染、Context 上下文丢失等核心痛点,提供规范化的 PHP 高并发编程实战代码建议。

160

2026.05.19

深入理解Hyperf AOP切面与注解使用
深入理解Hyperf AOP切面与注解使用

详尽介绍 Hyperf 依赖注入容器与 AOP 面向切面编程的使用技巧,包含自定义注解开发流程及注解不生效的排查方案,助力开发者掌握框架核心架构。

424

2026.05.19

Hyperf 数据库操作与连接池优化方案
Hyperf 数据库操作与连接池优化方案

针对 Hyperf Eloquent 模型在大数据量下的表现进行深度优化,讲解连接池断线重连、超时设置及事务处理等生产环境常见技术疑难。

184

2026.05.19

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

20

2026.09.23

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebSocket手册
WebSocket手册

共0课时 | 0人学习

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

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