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

Laravel + WebSockets 实时通知系统【详解】

老涛大大_1769

老涛大大_1769

发布时间:2026-07-11 19:21:25

|

505人浏览过

|

来源于php中文网

原创

根本原因是后端未运行WebSocket服务或配置错位:Laravel自身不提供WebSocket服务器,必须手动执行php artisan websockets:serve并确保其持续运行,同时严格对齐wsHost(禁用localhost,改用127.0.0.1或真实IP)、wsPort(默认6001)、PUSHER_APP_KEY(前后端完全一致)、Nginx代理头(proxy_http_version 1.1、Upgrade、Connection)及频道名格式(如.private-user.123)。

laravel + websockets 实时通知系统【详解】

WebSocket 连不上,laravel-echo 一直显示 connecting

根本原因不是前端代码写错了,而是后端压根没跑起来或配置错位。Laravel 自身不提供 WebSocket 服务器,php artisan websockets:serve 必须在后台持续运行,且不能被防火墙、Docker 网络或 Nginx 拦截。

常见卡点:

  • wsHost 写成 localhost —— 某些浏览器(尤其 Chrome)和 Docker 容器内会解析失败,改用 127.0.0.1 或服务实际 IP
  • wsPort 默认是 6001,不是 80 或 443;若改了端口,前端 wsPort 和启动命令的 --port 必须一致
  • Nginx 反向代理时漏配关键头:proxy_http_version 1.1、Upgrade $http_upgrade、Connection "upgrade"
  • 环境变量 PUSHER_APP_KEY 在 config/broadcasting.php(pusher 驱动)和 config/websockets.php(apps.0.key)里必须完全一致,不能一个是 local 一个是 app-key-123

广播事件发了,但前端收不到

不是队列没跑,也不是事件没触发,而是「频道名 + 事件名」双校验断在任意一环就静默失败。

检查顺序:

  • 事件类是否实现 ShouldBroadcast,且 broadcastOn() 返回的是 PrivateChannel('user.123') 或 Channel('public'),不是字符串
  • 前端监听频道名必须严格匹配:后端返回 PrivateChannel('user.123'),前端就得用 .private-user.123(开头带点),不能写成 user.123 或 .user.123
  • 如果用了 broadcastAs(),比如返回 'notification.new',前端 .listen('notification.new', ...) 才有效;否则默认按类名 App.Events.NotificationNew 匹配,大小写和命名空间都不能错
  • 队列驱动不是 sync 的话,php artisan queue:work 必须正在运行;Redis 队列还要确认 QUEUE_CONNECTION=redis 和 BROADCAST_DRIVER=redis 已启用

私有频道认证失败,换账号就收不到通知

私有频道(PrivateChannel)和存在频道(PresenceChannel)必须走 routes/channels.php 的授权逻辑,这里写错就直接拒绝连接,连握手都过不去。

Laravel
Laravel

避免常见的Laravel错误:N+1查询、批量赋值、缓存陷阱及队列序列化陷阱。

下载

典型问题:

  • 闭包里没 return true/false,或者用了 Auth::check() 却没处理 guest 状态
  • 频道名硬编码,比如 Route::channel('user.{id}', function ($user, $id) { return $user->id == $id; });,但事件里传的是 auth()->id(),而用户未登录时 auth()->id() 是 null,导致路由匹配失败
  • 中间件没生效,比如在 channels.php 里用了 auth:sanctum,但请求没带 Authorization: Bearer xxx 或 cookie 未正确传递
  • 前端初始化 Echo 时没传 auth 配置,比如缺了 csrfToken 或 authEndpoint,导致鉴权请求 403

本地开发能通,上线后通知延迟或丢消息

单机 websockets:serve 在生产环境扛不住并发,也做不到多实例状态同步,必须切到 Redis 模式。

关键配置项(config/websockets.php):

  • 'replication' => ['mode' => 'redis'] 启用跨进程同步
  • 'apps' => [['capacity' => 10000]] 设置单应用最大连接数,避免被踢
  • 'statistics' => ['enable' => true] 打开统计,配合仪表盘 /laravel-websockets 查实时连接数和错误率
  • 确保 Redis 服务稳定,redis-cli ping 能通,且 PHP 的 redis 扩展已启用(不是 predis)

真正容易被忽略的是:WebSocket 连接是长生命周期的,一旦某个实例宕机,已连客户端不会自动漂移——得靠负载均衡层做健康检查 + 会话保持,否则用户会掉线。

热门AI工具

更多
DeepSeek

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

讯飞智作

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

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

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

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

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

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

817

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

815

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2408

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3421

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

4790

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

3196

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

6109

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

1356

2026.03.04

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

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

120

2026.09.23

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 184人学习

Composer手册
Composer手册

共0课时 | 0人学习

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

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