Laravel中使用swoole项目实战开发案例二(后端主动分场景给界面推送消息)

工欲善其事,必先利其器。在正式开发之前我们检查好需要安装的拓展,不要开发中发现这些问题,打断思路影响我们的开发效率。

  • 安装 swoole 拓展包
  • 安装 redis 拓展包
  • 安装 laravel5.5 版本以上

如果你还不会用swoole就out了

如果喜欢我的文章,想与一群资深开发者一起交流学习的话,获取更多相关大厂面试咨询和指导,关注我或点击此处

2 Laravel 生成命令行

  1. php artisan make:command SwooleDemo
class SwooleDemo extends Command{protected $signature = 'swoole:demo';protected $description = '这是关于swoole的一个测试demo';public function __construct(){    parent::__construct();}public function handle(){    $this->line("hello world");}}

我们分别运行 php artisan 指令和 php artisan swoole:demo 会看到关于这个命令的说明,和输出 hello world。(laravel 命令行用法详解)

本课程为swoole入门教程,通过从swoole的安装讲到swoole-tcp、同步客户端、异步客户端、udp到服务端客户端等技能,同时每一小结理论配套相关商业项目实战案例,增加学习效果,达到熟练掌握并使用

喜欢我的文章可以找我要进阶资料,助力你达到30K

3 命令行逻辑代码

  • 编写一个最基础的 swoole 命令行逻辑代码
<?phpnamespace AppConsoleCommands;use IlluminateConsoleCommand;use IlluminateSupportFacadesRedis;class SwooleDemo extends Command{    // 命令名称    protected $signature = 'swoole:demo';    // 命令说明    protected $description = '这是关于swoole websocket的一个测试demo';    // swoole websocket服务    private static $server = null;    public function __construct()    {        parent::__construct();    }    // 入口    public function handle()    {        $this->redis = Redis::connection('websocket');        $server = self::getWebSocketServer();        $server->on('open',[$this,'onOpen']);        $server->on('message', [$this, 'onMessage']);        $server->on('close', [$this, 'onClose']);        $server->on('request', [$this, 'onRequest']);        $this->line("swoole服务启动成功 ...");        $server->start();    }    // 获取服务    public static function getWebSocketServer()    {        if (!(self::$server instanceof swoole_websocket_server)) {            self::setWebSocketServer();        }        return self::$server;    }    // 服务处始设置    protected static  function setWebSocketServer():void    {        self::$server  = new swoole_websocket_server("0.0.0.0", 9502);        self::$server->set([            'worker_num' => 1,            'heartbeat_check_interval' => 60,    // 60秒检测一次            'heartbeat_idle_time' => 121,        // 121秒没活动的        ]);    }    // 打开swoole websocket服务回调代码    public function onOpen($server, $request)    {        if ($this->checkAccess($server, $request)) {            self::$server->push($request->fd,"打开swoole服务成功!");        }    }    // 给swoole websocket 发送消息回调代码    public function onMessage($server, $frame)    {    }    // http请求swoole websocket 回调代码    public function onRequest($request,$response)    {    }    // websocket 关闭回调代码    public function onClose($serv,$fd)    {        $this->line("客户端 {$fd} 关闭");    }    // 校验客户端连接的合法性,无效的连接不允许连接    public function checkAccess($server, $request):bool    {        $bRes = true;        if (!isset($request->get) || !isset($request->get['token'])) {            self::$server->close($request->fd);            $this->line("接口验证字段不全");            $bRes = false;        } else if ($request->get['token'] !== "123456") {            $this->line("接口验证错误");            $bRes = false;        }        return $bRes;    }    // 启动websocket服务    public function start()    {        self::$server->start();    }}

编写 websoket js 代码

    swoole测试

这是一个测试

jsp项目开发案例_Laravel中使用swoole项目实战开发案例一 (建立swoole和前端通信)相关推荐

  1. Django项目于之在线教育平台网站的实战开发(三)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :Django项目于之在线教育平台网站的实战开发(二)_cdtaogang's blog-CSDN博客 ...

  2. 微信开发实例视频教程-深入浅出微信公众平台实战开发

    微信开发视频教程-深入浅出微信公众平台实战开发(微网站.LBS云.Api接口调用.服务号高级接口) 一.微信开发实例视频教程总目录: 微信开发实例视频教程 讲师介绍: 易伟,现广东合桓律师事务所专职律 ...

  3. jsp项目开发案例_Laravel 中使用 swoole 项目实战开发案例一 (建立 swoole 和前端通信)life...

    1 开发需要环境 工欲善其事,必先利其器.在正式开发之前我们检查好需要安装的拓展,不要开发中发现这些问题,打断思路影响我们的开发效率. 安装 swoole 拓展包 安装 redis 拓展包 安装 la ...

  4. vs2019中如何创建qt项目_在VS2015中创建Qt项目【VS+Qt项目开发系列】(二)

    在VS2015中创建Qt项目[VS+Qt项目开发系列](二) 发布时间:2018-04-20 22:44, 浏览次数:1269 , 标签: VS Qt 在上一篇[VS+Qt项目开发](一)在VS201 ...

  5. django开发-在Docker中部署django项目

    今天整理了一下如何在docker中部署django项目. 1.环境如下: python3.6 django2.0.5 nginx mysql5.7 gunicorn 2.项目结构如下: 由于仅仅是测试 ...

  6. idea 启动php项目路径,关于idea中Java Web项目的访问路径问题

    说明 这里只以 servlet 为例,没有涉及到框架,但其实路径的基本原理和框架的关系不大,所以学了框架的同学如果对路径有疑惑的也可以阅读此文 项目结构 在 idea 中新建一个 Java Web 项 ...

  7. Django项目于之在线教育平台网站的实战开发(完结)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/9 ...

  8. Django项目之Web端电商网站的实战开发(一)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 项目源码下载 目录 一丶项目介绍 二丶电商项目开发流程 三丶项目需求 四丶项目架构概览 五丶项目数据库设计 六丶项目框架搭建 一丶 ...

  9. ubuntu版php开发工具,Ubuntu 中搭建 LAMP 及 php 开发工具

    Ubuntu 中搭建 LAMP 及 php 开发工具 Step1. 安装 Apache 1.在 terminal 中输入一下命令并执行: sudo apt-get install apache2 2. ...

最新文章

  1. COM线程模型的行为
  2. c语言面试题大汇总之华为面试题,计算机c语言面试题大汇总之华为面试题6.doc...
  3. 3.12PMP试题每日一题
  4. python学习笔记列表和元组(三)
  5. HTML语法初探(一)
  6. linux mpc8313启动流程,基于MPC8313E和FPGA的双口RAM驱动开发
  7. php 向py发起请求,Python向PHP发起GET与POST请求
  8. flutter图片聊天泡泡_flutter即时聊天IM仿微信|flutter聊天界面
  9. 来,膜拜下android roadmap,强大的执行力
  10. 如何在 Mac 上使用任务控制空间?
  11. 秘籍之树上蹦迪--LCA
  12. 21.go tool pprof
  13. 咸鱼CAD笔记—CAD基础操作
  14. 像素值、物理尺寸、分辨率三者关系
  15. vs2003 常见问题及处理
  16. arm-linux-gcc踩坑1
  17. CountDownLatch倒计数锁存器(Latch:门闩[shuan])
  18. 极限中0除以常数_0的美好
  19. 弹性云主机利用云镜像克隆新开、迁移数据[云镜像]
  20. before和after怎么区分_before和after区别 after的用法

热门文章

  1. thinking in java -- notes-2
  2. jQuery的radio,checkbox,select操作
  3. mysql int tinyint_MySQL中int(M)和tinyint(M)数值类型中M值的意义
  4. C++学习之路(一)
  5. ubuntu安装Redis+安装mysql(配置远程登录)+安装jdk+安转nginx+安转teamviewer+安装terminator+安装sublime
  6. C++中用frugally-deep调用keras的模型并进行预测
  7. Android下拉刷新效果实现
  8. MySQL流浪记(二)—— MySQL介绍及其特性
  9. Learn X in Y minutes
  10. Inline Method(内联函数)