随笔---laravel广播事件

本文介绍了如何使用Laravel广播事件配合WebSocket实现实时通知功能,以达到类似QQ邮箱的提醒效果。通过配置广播驱动、定义广播事件、前端视图设置、模拟触发事件以及启动Redis和WebSocket服务器,实现数据从服务器到客户端的实时推送。同时,提到了前端使用了socket.io.js库和bootstrap的toastr来展示数据。
摘要由CSDN通过智能技术生成

目标效果:像QQ邮箱那样,在收到服务器通知的时候在页面上主动弹出提示框。
这里写图片描述

在很多场景中,我们不能等待服务器做出响应,例如有些业务是需要人工进行处理的,可能耗时几小时才有结果,但是我们又需要在有结果的时候及时收到回馈,那么这里有几个选择:1.手动刷新2.前端循环ajax请求3.websocket。第一个不用说了吧,不太可能考虑,第二个的话服务器压力会很大,因为两小时内一个浏览器就能发出成百上千次请求,用户多的情况下处理请求量太大,所以这里采用websocket的方法,我不知道qq邮箱是否也是用这种方法,但是在中小型网站中应用这种方法能做到差不多的效果。当然,广播事件传输的仅仅是数据而已,你可以编写前端js,在接收到服务器数据的时候将数据包装成任意需要的样式。
参考资料:https://segmentfault.com/a/1190000002921506
事前准备:redis、node、wamp/lamp环境、一个能用的laravel项目
—————————————————————————————————————————————————————
一、配置

config/broadcasting.php中,如下配置’default’ => env(‘BROADCAST_DRIVER’,’redis’),使用redis作为php和js的通信方式。 config/database.php中配置redis的连接。

——————————————————————————————————————————————

二、定义一个广播事件

根据Laravel文档的说明,想让事件被广播,必须让Event类实现一个Illuminate\Contracts\Broadcasting\ShouldBroadcast接口,并且实现一个方法broadcastOn。broadcastOn返回一个数组,包含了事件发送到的channel(频道)。如下:

<?php

namespace App\Events;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class SomeEvent extends Event implements ShouldBroadcast
{
    
    use SerializesModels;

    public $user_id;
    public $m1;
    p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值