我正在尝试与laravel和vue建立实时聊天,而我正在使用pusher.js
我可以收听公共事件,但不能收听私人频道事件。
当一条消息被保存到我的数据库中时,我从laravel调度一个事件。
public function broadcastOn()
{
$room= Room::where('id', $this->message->room_id)->first();
return new PrivateChannel('message-channel'.$room->id);
}
然后,我应该订阅我的私人频道,但是我不能订阅。
{event: "pusher:connection_established", data: "{"socket_id":"1078.10518176","activity_timeout":120}"}
data: "{"socket_id":"1078.10518176","activity_timeout":120}"
event: "pusher:connection_established"
我怀疑这可能是因为我使用社交名流自定义了auth,但是登录响应似乎还可以。
public function boot()
{
Broadcast::routes(['middleware' => 'auth:salon_staff']);
require base_path('routes/channels.php');
}
在我的广播路由中,为了进行测试,我始终返回true。
Broadcast::channel('private-message-channel{roomId}', function ($salon_staff, \App\Room $room) {
return true;
});
这是vue的代码。
var self = this;
var channel = pusher.subscribe('message-channel'+this.room.id);
channel.bind('App\\Events\\MessageSaved', function(data) {
self.msgs= [
...self.msgs,
data.message
];
});
有人知道为什么会这样吗?