Laravel Echo 500 错误未收到推送器事件
Laravel Echo 500 error not receiving pusher event
我在 Laravel Echo with pusher 中使用状态通道时遇到问题。当我触发一个事件时,我从 BroadcastException
收到 500 错误,没有响应主体,这对我来说很难调试。当我查看 pusher 调试控制台时,pusher 监听了 presence 事件。所以我假设我的事件从未被触发到 Pusher。这是我的网络选项卡中的预览
我的控制器:
public function store() {
$user = auth()->user();
$message = $user->messages()->create([
'message' => request('message')
]);
event(new MessageReceived($message, $user));
return ['status' => 'OK'];
}
MessageReceived
class
namespace App\Events;
class MessageReceived implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Message $message, User $user)
{
$this->message = $message;
$this->user = $user;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PresenceChannel('chatroom');
}
}
这是我的 vuejs
mounted() {
axios.get('/messages')
.then(response => {
this.messages = response.data
})
.catch(error => {
console.log(error)
})
Echo.join('chatroom')
.listen('MessageReceived', (e) => {
console.log(e) //never get into this
})
},
我找不到错误在哪里。我使用集群 ap1 并在 broadcasting.php
和我的 bootstrap.js
中声明。任何人都可以帮助我吗?
这可能是由您的配置错误引起的。以下是一些需要检查的事项:
- 在您的
.env
文件中,确保正确设置推送器 ID、密钥和密码。
- 如果您从 Laravel 5.3 升级到 Laravel 5.4,请注意
.env
变量 PUSHER_KEY
现在是 PUSHER_APP_KEY
并且 PUSHER_SECRET
现在是PUSHER_APP_SECRET
- 在您的
config/broadcasting.php
中,确保集群设置正确。
如果您不在 HTTPS 中,您可能必须将 'encrypted
键设置为 false
'options' => [
'cluster' => 'ap1', // change this to your app's cluster
'encrypted' => false,
],
我在 Laravel Echo with pusher 中使用状态通道时遇到问题。当我触发一个事件时,我从 BroadcastException
收到 500 错误,没有响应主体,这对我来说很难调试。当我查看 pusher 调试控制台时,pusher 监听了 presence 事件。所以我假设我的事件从未被触发到 Pusher。这是我的网络选项卡中的预览
我的控制器:
public function store() {
$user = auth()->user();
$message = $user->messages()->create([
'message' => request('message')
]);
event(new MessageReceived($message, $user));
return ['status' => 'OK'];
}
MessageReceived
class
namespace App\Events;
class MessageReceived implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Message $message, User $user)
{
$this->message = $message;
$this->user = $user;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PresenceChannel('chatroom');
}
}
这是我的 vuejs
mounted() {
axios.get('/messages')
.then(response => {
this.messages = response.data
})
.catch(error => {
console.log(error)
})
Echo.join('chatroom')
.listen('MessageReceived', (e) => {
console.log(e) //never get into this
})
},
我找不到错误在哪里。我使用集群 ap1 并在 broadcasting.php
和我的 bootstrap.js
中声明。任何人都可以帮助我吗?
这可能是由您的配置错误引起的。以下是一些需要检查的事项:
- 在您的
.env
文件中,确保正确设置推送器 ID、密钥和密码。 - 如果您从 Laravel 5.3 升级到 Laravel 5.4,请注意
.env
变量PUSHER_KEY
现在是PUSHER_APP_KEY
并且PUSHER_SECRET
现在是PUSHER_APP_SECRET
- 在您的
config/broadcasting.php
中,确保集群设置正确。 如果您不在 HTTPS 中,您可能必须将 '
encrypted
键设置为false
'options' => [ 'cluster' => 'ap1', // change this to your app's cluster 'encrypted' => false, ],