You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Echo无法连接Socket服务器求助(Pusher.js可正常连接)

Laravel Echo无法连接beyondcode/laravel-websockets但Pusher.js正常的解决方案

以下是针对该问题的排查和解决步骤:

  • 添加disableStats参数
    beyondcode/laravel-websockets不需要Pusher的统计服务,默认情况下Echo会尝试请求统计接口,这可能导致连接失败。在Echo配置中加入该参数:
window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'a12bc34',
    cluster: 'mt1',
    encrypted: false,
    wsHost: '127.0.0.1',
    wsPort: 6001,
    forceTLS: false,
    disableStats: true // 新增此参数
});
  • 强制指定传输方式
    有时Echo会优先尝试其他非WebSocket的传输协议,强制限定只使用WebSocket:
window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'a12bc34',
    cluster: 'mt1',
    encrypted: false,
    wsHost: '127.0.0.1',
    wsPort: 6001,
    forceTLS: false,
    disableStats: true,
    enabledTransports: ['ws', 'wss'] // 只启用WebSocket传输
});
  • 检查Laravel端广播配置
    确认.env文件中的广播驱动和Pusher配置正确:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=你的应用ID
PUSHER_APP_KEY=a12bc34
PUSHER_APP_SECRET=你的应用密钥
PUSHER_APP_CLUSTER=mt1

同时确保config/broadcasting.php中的pusher配置指向本地WebSocket服务:

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'cluster' => env('PUSHER_APP_CLUSTER'),
        'encrypted' => false,
        'host' => '127.0.0.1',
        'port' => 6001,
        'scheme' => 'http',
        'curl_options' => [
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_SSL_VERIFYPEER => 0,
        ],
    ],
],
  • 查看控制台日志定位具体问题
    打开浏览器开发者工具的Console标签,查看Pusher的日志输出,里面会包含连接失败的详细原因(如地址错误、权限问题等),根据日志信息进一步排查。

另外注意:你的Echo代码中监听的事件名是eventInternalTransferFormd,比Pusher.js中的多了一个末尾的d,即使连接成功也无法接收事件,建议修正为一致的名称。

内容的提问来源于stack exchange,提问作者amirhossein masoudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:12:02