关于Pusher.js的快速提问。
我今天开始处理通知功能,并希望通过Pusher.js执行此操作,因为我将其用于聊天。
我在Laravel工作。我想要实现的是对应用程序的广泛订阅。当用户注册正在为他设置频道“notifications_channel”时,我将其存储在数据库中。我知道如何将用户注册到频道,但一旦他离开该页面,房间就会腾空。这不是我想要的,因为我想发送用户通知,无论他在平台上的哪个位置。
我在文档中找不到这样的东西,所以我想也许你们其中一个人知道怎么做。
以下是我所做的一些片段:
当用户注册时我点火:
$generateChannel = User::generateNotificationsChannel($request['email']);
这在我的模型中对应:
public static function generateNotificationsChannel($email){
$userID = User::getIdByMail($email);
return self::where('email', $email)->update(['notifications_channel' => $userID."-".str_random(35)]);
}
这是相当基本的,但就目前而言,这就是我所需要的一切。
所以现在,当用户登录我的HomeController的Index函数时,它会从数据库收集NotificationsChannel并将其发送到视图。
public function index()
{
$notificationsChannel = User::getUserNotificationsChannel(\Auth::user()->id);
return view('home', compact('notificationsChannel', $notificationsChannel));
}
一旦我们到达那里,我只需将用户订阅到该频道,并将他绑定到与频道相关的任何事件:
var notifications = pusher.subscribe('{{$notificationsChannel}}');
channel.bind('new-notification', notifyUser);
function notifyUser(data){
console.log(data);
}
你可以看到,现在它非常基本。但我的调试控制台告诉我,一旦用户离开/家,频道就会空出来。
所以问题是,无论他在平台上的哪个位置,我如何让他订阅频道?
非常感谢任何和所有帮助!
提前致谢。
答案 0 :(得分:1)
我已经找到了解决此问题的方法,我已经决定将通知频道发送到我的母版布局,用于在用户登录后扩展所有视图。在我的主布局中我订阅了用户自己的通知频道。
对于那些可能对我如何做的人感兴趣:
我更改了我可以在width:100%
中找到的AppServiceProvider的启动功能。代码如下所示:
\app\Providers\AppServiceProvider
在我的母版布局中,我只是通过抓取频道名称来订阅用户。