我想知道是否有一个功能只为登录用户加载echo/pusher
。
现在,如果用户已登录,我可以 ofc 签入我的blade
文件,如果是这样,我只需加载另一个包含以下内容的js
文件:
Echo.channel('channel')
.listen('event', (e) => {
console.log('realtime..');
});
原因是我不想与推送器建立很多连接。
即使我加载了一个用户无法访问它的私人频道,仍然算作与推送器的连接
Echo.private('channel')
.listen('event', (e) => {
console.log('realtime..');
});
你可以用条件包装 Echo。关于如何执行此操作,我有 3 个选项:
1( 在包含脚本之前在刀片中设置 var:
<script type="text/javascript">
var isLoggedIn = true;
</script>
<script type="text/javascript" src="path/app.js" />
在 js 中:
if(isLoggedIn){
Echo.private('channel')
.listen('event', (e) => {
console.log('realtime..');
});
}
2(在Echo之前发出ajax请求以检查用户是否已登录:
$.get('/user/isLoggedIn', function(data){
if(data){
Echo.private('channel')
.listen('event', (e) => {
console.log('realtime..');
});
}
});
3(只需检查dom元素,只有登录用户才能看到。
if($('.some_element_that_only_logged_in_user_can_see').length)
Echo.private('channel')
.listen('event', (e) => {
console.log('realtime..');
});
});
jquery中的示例,但您可以使用任何框架或vanilla js来实现它。