我的活动在推送者那里收到-
事件-API消息
详细信息-频道:私人聊天,事件:应用程序\事件\消息发送
但是在我的Vue前端,回声没有从推动者那里接收任何事件。
已发送消息。php
class MessageSent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user, Message $message)
{
$this->user = $user;
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chat');
}
}
闲聊vue
mounted() {
Echo.private("chat").listen("MessageSent", (e) => {
console.log("Received");
this.allMessages.push(e.message);
this.fetchMessages();
});
},
bootstrap.js
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
forceTLS: true,
});
路线/channels.php
Broadcast::channel('chat', function ($user) {
return auth()->check();
});
我还设置了广播驱动器=推送器
在MessageSent事件中执行此操作
public function broadcastOn()
{
Broadcast::routes(['middleware' => ['auth:api']]);
return new PrivateChannel('chat');
}
并在BroadcastServiceProvider中添加以下行:
Broadcast::routes(['middleware' => ['auth:api']]);
我已经解决了这个问题,把下面的代码从bootstrap.jsapp.js.所以,在我的app.js-
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
forceTLS: true,
});
但我不知道为什么相同的代码在引导中不起作用。js