Laravel仅为登录用户加载回声和推送器



我想知道是否有一个功能只为登录用户加载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来实现它。

最新更新