Laravel实时通知

时间:2017-08-01 12:56:52

标签: laravel

我在laravel中创建了一个应用程序。当一个用户创建作业时,必须由其他用户通知。对于通知,我使用了laravel通知。但我需要刷新页面才能收到通知。如何实时获取通知。

3 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,从laravel你可以使用Laravel Broadcasting,点击here!

在那里你可以找到设置你的服务器(laravel)和你的前端的教程

答案 1 :(得分:0)

最新的laravel版本附带Laravel Echo,这是一个可以获得您想要的工具。

您可以使用laravel应用程序来广播事件。 然后,您可以定义要在其上广播这些事件的频道。

然后你需要receive这些广播在你的前端。

此设置还需要使用driver,这可能是推送器,redis或许多其他设备。

答案 2 :(得分:0)

这是一个新的评论通知流程,仅供参考。

enter image description here

Laravel

用户模型

namespace App\Models\Sys;

use App\Models\Model;
use Illuminate\Notifications\Notifiable;

class User extends Model
{
    use Notifiable;

    protected $table = 'user';
    
    public function receivesBroadcastNotificationsOn()
    {
        return 'user.' . $this->id;
    }
}

运行监听器

php artisan queue:listen --tries=1

NodeJS

安装软件包

npm i laravel-echo laravel-echo-server pm2 socket.io-client

启动laravel echo服务器

node_modules/laravel-echo-server/bin/server.js  start

resources/js/bootstrap.js中导入回声

/**
 * Echo exposes an expressive API for subscribing to channels and listening
 * for events that are broadcast by Laravel. Echo and event broadcasting
 * allows your team to easily build robust real-time web applications.
 */

import Echo from 'laravel-echo';

window.io = require('socket.io-client');
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + (process.env.MIX_APP_ENV === 'local' ? ':6001' : ''),
    auth: {
        headers: {}
    },
});

在页面中接收通知

<script>
    Echo.private('user.' + uid)
        .notification((e) => {
            // do something
        });
</script>