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

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

b5e50196e282dbbc5fb6c85067313c92.png

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测试

这是一个测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表

背景知识视频教程Arduino 训练营&#xff1a;通过项目学习​viadean.com通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com通过构建实际应用程序来掌握Arduino - 国外课栈​viadean.com我们大多数人都熟悉162点阵液晶显示器&#xff0c;它在许多项目中用于向用户…

计算机的安全设置在哪儿,电脑防火墙在哪里设置

随着微软系统的更新&#xff0c;现在的Windows 10系统对于网络防护非常的安全&#xff0c;但是有的朋友电脑需要测试一些软件&#xff0c;就需要关闭电脑的防火墙&#xff0c;但是不懂怎么设置电脑防火墙&#xff0c;不用担心下面就让小编教你电脑防火墙在哪设置吧。下面电脑防…

python的加减乘除运算_python实现四则运算

https://gitee.com/szh123/four_arithmetic_implementation.git 1.需求分析&#xff1a; 实现四则运算题目及答案生成&#xff0c;控制生成题目的个数&#xff0c;题目中数值不超过10且有分数存在并用真分数表示。 可以生成10000道题 运算符不超过3个 题目不能出现重复即不能经…

微众银行软件测试笔试题,微众银行4月8日笔试题目及部分代码

AC&#xff0c;大致思路就是算一下该字符串能组成的最大回文长度&#xff0c;然后按差值奇偶性输出胜利者&#xff0c;本来以为“最优策略”的删除任意一个字符会很复杂&#xff0c;但是试了下就过了。import java.util.Scanner;public class Main {public static void main(St…

水晶底是什么材质_蓝宝石水晶镜面,贵是有道理的!

表友们在选择手表的时候&#xff0c;常常会在意机芯、性能等&#xff0c;但是你第一眼爱上的往往是它的外观。在手表上&#xff0c;有一样部件&#xff0c;你总是最先看到&#xff0c;占据着你视线的C位&#xff0c;但是你却总是忽略它。这个部分就是表镜&#xff0c;这个重要却…

dedecms 漏洞_dedescan一款织梦漏洞扫描器

dedescan是一款可以扫描所有已公开的dedecms漏洞的扫描器。... ... ... ... ... ... …

post获取重定向的链接 python_欧美音乐网站Python爬虫项目实战

爬虫项目实战0x01 目标分析最近发现一个比较好的欧美音乐下载网站&#xff0c;可以下载大部分高质量欧美音乐。该爬虫项目要实现自动化批量获取用户想要下载的音乐。本文从网站分析、爬虫设计、代码实现三个方面出发&#xff0c;系统介绍该爬虫项目。项目完整代码在Github中可以…

中国志愿者服务器注册,如何注册成为志愿者?中国志愿服务网注册流程

西宁市团员、团干、青年志愿者个人和组织网上注册方式为“志愿汇”和“全国志愿服务信息系统(www.chinavolunteer.cn)”两个网站平台双线注册。志愿者注册流程基本操作指引一、PC电脑端操作注&#xff1a;本篇内容较多&#xff0c;建议先“收藏”文章或点击底部“在看”。1、PC…

python s d是什意思_python里d是什么意思

python中的fd()是turtle模块中的一个方法。fd 方法的实参是像素距离。turtle模块&#xff1a;它可以让你使用海龟图形&#xff08;turtle graphics&#xff09;绘制图像 turtle模块其中的函数&#xff1a; 1&#xff09;turtle.pensize()&#xff1a;设置线条的粗细&#xff1b…

计算机二级如何接受审阅者修订,操作方法 合并修订文档 步骤1 要求审阅者

工作中&#xff0c;经常需要将文档交予多人同时审阅&#xff0c;那么如何实现让多人同时修改一个文档呢?解决方案审阅者在修订模式下修改文档&#xff0c;再将所有的修订文档合并。操作方法合并修订文档步骤1 要求审阅者&#xff0c;在修订模式下&#xff0c;修改文档&#xf…

vue中的uri_浅谈vue-resource和vue-axios的区别

可能有的人对vue-resource 和vue-axios比较陌生&#xff0c;也可能用到了都不知道。他其实就是我们vue请求里面的 this.$http.*** 和 this.axios.***vue-resourcevue-resource是Vue.js的一款插件&#xff0c;它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说&…

open表和closed表_011 Ruby 多Word表写入Excel

Hey&#xff0c;最近有很多粉丝私信询问&#xff0c;2020年已过半&#xff0c;又该统计半年报表信息了。你关心的是&#xff0c;Ruby能否像VBA、Python一样&#xff0c;实现多表格快速汇总&#xff1f;答案是肯定的。这期&#xff0c;为你讲解如何将多个Word表格汇总到Excel里。…

审计工作存在的难点和问题_电力工程造价审计的难点与对策有哪些?学习安装电力造价广联达计价看这里!!...

目前电力工程审计的难度较大&#xff0c;对于审计人员的专业素质要求很高&#xff0c;尤其是在电力工程施工发生变动时&#xff0c;需要考虑工程的实际情况&#xff0c;及时对其进行工程造价审计。文章对电力工程造价审计中的难点进行了分析&#xff0c;并提出了相应的解决措施…

蒙特卡洛分析_随机模拟:马尔科夫链蒙特卡洛采样MCMC与EM算法「2.3」

最近学习了机器学习中的马尔科夫链蒙特卡洛(Markov Chain Monte Carlo, 简称MCMC) 相关的知识。主要内容包括&#xff1a;【1】蒙特卡洛原则&#xff0c;及其应用于采样的必要性(已经发布在头条)【2】用于求解最大似然、近似推断、期望问题的经典采样算法&#xff1a;Metropoli…

三维错切变换矩阵_图像的仿射变换

目录&#xff1a;概述图像基本变换仿射变换原理python实现一、概述图像的几何变换主要包括&#xff1a;平移、缩放、旋转、仿射、透视等等。图像变换是建立在矩阵运算基础上的&#xff0c;通过矩阵运算可以很快的找到不同图像的对应关系。理解变换的原理需要理解变换的构造方法…

app系统服务器出错怎么回事,app连接服务器出错

app连接服务器出错 内容精选换一换接口调用出错将无法获取建立相应隧道连接的必要信息&#xff0c;将无法正常建连云手机设备实例&#xff0c;具体报错示例如下&#xff1a;首先&#xff0c;尝试使用adb connect重新建立连接&#xff0c;依旧报错可通过查看安装目录下的日志adb…

js foreach 跳出循环_VUE.js

Vue.js模板语法vue.js使用了基于HTML的模板语法&#xff0c;允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据&#xff0c;其核心就是一个允许开发者采用简洁的模板语法来将数据渲染进DOM系统。使用各种组件来做成一个项目的话&#xff0c;需要结合单页应用。插值数据绑定最…

2异常处理_异常是什么?什么是常用类?

第一节 异常1. 异常的概念​ 异常(Exception) 即例外&#xff0c;程序没有按自己预想的结果运行出来&#xff0c;出现了非正常情况&#xff0c;即“程序得病了”。怎么让我们写的程序做出合理的处理&#xff0c;不至于崩溃是我们关注的核心。 异常机制就是当程序出现错误&#…

origin三元相图_扩增子图表解读7三元图:三组差异数量和关系

点击上方蓝色「宏基因组」关注我们&#xff01;专业干货每日推送&#xff01;背景介绍(Introduction)宏基因组学宏基因组学目前的主要研究方法包括&#xff1a;16S/ITS/18S扩增子、宏基因组、宏转录组和代谢组&#xff0c;其中以扩增子研究最为广泛。目的意义本系列文章将带领大…

写出python字符串三种常用的函数或方法_python中几种常用字符串函数

1、lower()把所有字符换成小写 2、upper()把所有字符换成大写 3、swapcase()大小写互换 4、title()把每个单词首字母大写,他是以所有英文字母的字符来区别是否为一个单词的,eg:s "a是傻b" s2 s.title() 结果为"A傻B",a和b都变成了大写,因为他是根据英文字…