Laravel仅加载登录用户的回显和推送程序

问题描述 投票:0回答:1

我想知道是否存在仅为登录用户加载echo/pusher的功能。

现在,如果用户已登录,我可以ofc登录我的blade文件,如果这样,我只需加载另一个包含以下内容的js文件:

Echo.channel('channel')
    .listen('event', (e) => {
        console.log('realtime..');
    });

原因是我不想占用太多与pusher的连接。

即使加载了用户无权访问的专用频道,仍然算作与推送程序的连接

Echo.private('channel')
        .listen('event', (e) => {
            console.log('realtime..');
        });
laravel echo pusher
1个回答
1
投票

您可以将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来实现它。

© www.soinside.com 2019 - 2024. All rights reserved.