热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpeventcommand,Laravel5.4,广播事件,pusher的配置以及使用

最近要写一个聊天室,于是了解了一下laravel的事件广播,参考资料来源于http:laravelacademy.orgpos但是在跟随博主动手的

最近要写一个聊天室,于是了解了一下laravel的事件广播,参考资料来源于http://laravelacademy.org/pos... 但是在跟随博主动手的时候, 发现事件成功触发, 但是pusher调试控制台上并没有收到事件。经过调试找到问题所在。

首先我们先创建一个事件:

php artisan make:event TestEvent

最终, 事件的代码如下, 这里有一个注意点就是

如果该事件没有继承use IlluminateContractsBroadcastingShouldBroadcast; 接口,那么触发事件,将不会发送事件至pusher 服务器上.

use ...

// 如果该事件没有继承use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 接口,那么触发事件,将不会发送事件至pusher 服务器上.

class TestEvent implements ShouldBroadcast

{

use Dispatchable, InteractsWithSockets, SerializesModels;

// 类型需为public

public $msg;

public function __construct($msg)

{

$this->msg = $msg;

}

public function broadcastOn()

{

return [

'test'

];

}

}

为了测试方便,我们创建一个artisan 命令来触发事件.

php artisan make:command TestEventCommand

打开命令类 app/Console/Commands/TestEventCommand.php 编辑后如下

class TestEventCommand extends Command

{

protected $signature = 'pusher:test {message}';

protected $description = 'pusher test';

public function __construct()

{

parent::__construct();

}

public function handle()

{

event(new \App\Events\TestEvent($this->argument('message')));

}

}

打开 app/Console/Kernel.php, 将刚创建的命令类添加至 $commands

protected $commands = [

Commands\TestEventCommand::class,

];

事件代码基本完成, 接下来导入pusher

composer require pusher/pusher-php-server

当pusher 成功导入之后 需要在env中配置, BROADCAST_DRIVER 需配置为pusher。 config/broadcasting.php 文件 BROADCAST_DRIVER 默认为null

- PUSHER_APP_ID=you_app_id

- PUSHER_APP_KEY=you_app_key

- PUSHER_APP_SECRET=you_app_secret

- BROADCAST_DRIVER = pusher

另外在这里测试发现如果 QUEUE_DRIVER 配置是redis 那么当触发事件的时候不会调用IlluminateBroadcastingBroadcastManager 下的createPusherDriver方法.也就是不生成pusher类发送事件. QUEUE_DRIVER应配置为sync

配置完成之后 我们就可以通过artisan 命令向pusher服务器发送事件,

php artisan pusher:test "hello"

那么,将会在pusher debug-console 上看到

1460000020617219



推荐阅读
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 在AngularJS中,有时需要在表单内包含某些控件,但又不希望这些控件导致表单变为脏状态。例如,当用户对表单进行修改后,表单的$dirty属性将变为true,触发保存对话框。然而,对于一些导航或辅助功能控件,我们可能并不希望它们触发这种行为。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 使用OpenGL实现三维空间中任意两点间圆柱体管道的绘制
    本文介绍了如何利用OpenGL在三维空间中的任意两个点之间绘制具有指定半径的圆柱体管道。鉴于OpenGL较为底层,许多功能需自行实现,文中提供了详细的代码示例及解析。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
author-avatar
我是你的特效
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有