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

Laravel Echo+Pusher在Heroku生产环境无法发送实时消息求助

实时聊天应用Heroku部署后Pusher无法发送消息问题

使用Pusher和Laravel Echo构建的实时聊天应用,本地运行正常,但部署到Heroku生产环境后,Pusher无报错、浏览器控制台无异常,却无法发送消息。本地仅添加wsHost配置到Echo对象时会出现异常,相关配置如下:

Bootstrap.js配置

window.Echo = new Echo({
   broadcaster: 'pusher',
   key: import.meta.env.VITE_PUSHER_APP_KEY,
   cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'sa1',    
   wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,
   wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,
   forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https',
   enabledTransports: ['ws', 'wss'],
});

broadcasting.php配置

'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'),     
        'port' => env('PUSHER_PORT', 443),
        'scheme' => env('PUSHER_SCHEME', 'https'),
        'encrypted' => true,
        'useTLS' => env('PUSHER_SCHEME', 'https') === 'https',
    ],
    'client_options' => [
        // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
    ],
],

广播事件SendPrivate代码

class SendPrivate implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    private $mensagem;
    private $user;

    public function __construct($mensagem , User $user)
    {
        $this->mensagem = $mensagem;
        $this->user = $user;
    }

    public function broadcastOn(): array
    {
        return [
           new PrivateChannel('User.'. $this->user->id)
        ];
    }

    public function broadcastWith()
    {
       return  [
            'mensagem' => $this->mensagem,
       ];
    }
}

Vue监听代码

Echo.private('User.' + idLogado.value).listen('SendPrivate', (e) => {  
   messages.value.push(e.mensagem);
   scrollBottom();
});

Heroku环境变量

VITE_PUSHER_APP_KEY= ********  
VITE_PUSHER_APP_CLUSTER = mt1  
VITE_PUSHER_HOST = ws-mt1.pusher.com  
VITE_PUSHER_PORT = 443  
VITE_PUSHER_SCHEME = https 

Pusher环境变量

PUSHER_APP_KEY= ******** 
PUSHER_APP_SECRET= ********  
PUSHER_APP_CLUSTER = mt1  
PUSHER_HOST = ws-mt1.pusher.com  
PUSHER_PORT = 443  
PUSHER_SCHEME = https 

已尝试的排查操作:

  • 修改Pusher集群配置
  • 添加/移除Echo的host配置
  • 本地需启动队列php artisan queue:work database --daemon --tries=5才能运行,Heroku已配置worker进程worker php artisan queue:listen

以上操作均未解决问题,且控制台无任何错误提示。

内容的提问来源于stack exchange,提问作者samuel souza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:33:23