我想知道是否存在仅为登录用户加载echo/pusher
的功能。
现在,如果用户已登录,我可以ofc登录我的blade
文件,如果这样,我只需加载另一个包含以下内容的js
文件:
Echo.channel('channel')
.listen('event', (e) => {
console.log('realtime..');
});
原因是我不想占用太多与pusher的连接。
即使加载了用户无权访问的专用频道,仍然算作与推送程序的连接
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)发出ajax请求以检查用户是否在Echo之前登录:
$.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中的示例,但是您可以使用任何框架或普通js来实现它。