如何在局域网中配置Laravel Reverb实现WebSocket共享?
局域网中配置Laravel Reverb实现跨设备WebSocket监听的解决方案
核心配置步骤
1. 修正Reverb的服务监听配置
修改项目根目录的.env文件,确保Reverb监听局域网可访问的地址,而非仅本地回环:
# 允许所有网卡监听(推荐),或直接填写服务器局域网IP(如192.168.1.100) REVERB_HOST=0.0.0.0 REVERB_PORT=9909 # 局域网测试优先用http,确认正常后再切换https REVERB_SCHEME=http
若后续启用HTTPS,补充证书路径配置:
REVERB_SCHEME=https REVERB_SSL_CERT=/path/to/your/certificate.pem REVERB_SSL_KEY=/path/to/your/private-key.pem
2. 前端Pusher连接参数硬编码局域网IP
前端代码必须明确指定Reverb的局域网IP和端口,不能依赖域名或默认配置。示例:
import Pusher from 'pusher-js'; const pusher = new Pusher('rfqctj66urp5ymorrtjk', { wsHost: '192.168.1.100', // 替换为你的服务器局域网IP wsPort: 9909, forceTLS: false, // http模式设为false,https模式设为true encrypted: false, // 对应http模式,https设为true enabledTransports: ['ws', 'wss'], });
3. 开放服务器端口并检查防火墙
- 确保服务器防火墙允许9909端口的TCP入站连接:
# 以ufw为例 sudo ufw allow 9909/tcp sudo ufw reload - 若服务器在虚拟机或容器中,需同步配置端口映射,确保9909端口能被局域网设备访问。
4. 独立启动Reverb服务
不要用php artisan serve同时运行Web应用和Reverb,需单独启动Reverb:
php artisan reverb:start
如需后台持续运行,可使用nohup或进程管理工具(如Supervisor):
nohup php artisan reverb:start &
常见问题说明
- 自签HTTPS证书问题:局域网使用自签证书时,客户端浏览器会因不信任证书拒绝连接。可先改用http测试连通性,或在每个客户端浏览器手动导入证书。
- 无需托管网站:你的需求完全可以实现,只要服务器在局域网内可访问、上述配置正确即可,无需将网站部署到公网。
内容的提问来源于stack exchange,提问作者eeuuggeenneee
相关产品推荐
相关产品推荐

