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个 题目不能出现重复即不能经…

python的内置函数string_Python错误:内置函数或方法对象没有属性“StringIO”

我只想下载一张图片。然后上传到Amazon S3。但它不起作用。在builtin_function_or_method object has no attribute StringIOTraceback (most recent call last):File "flickrDump.py", line 16, in imgpath s3.upload_thumbnail(thumbnail_nametools.randomString(…

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

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

python 多进程 多核_go/node/python 多进程与多核cpu

node node单线程&#xff0c;没有并发&#xff0c;但是可以利用cluster进行多cpu的利用。cluster是基于child_process的封装&#xff0c;帮你做了创建子进程&#xff0c;负载均衡&#xff0c;IPC的封装。 const cluster require(cluster); const http require(http); if (clu…

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

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

str计算机中代表什么,STR到底是待机还是休眠

1。为什么需要待机、休眠尽管电脑硬件运行速度越来越快&#xff0c;但操作系统的体积也在不断膨胀&#xff0c;使得电脑开、关机时&#xff0c;启动、关闭的程序越来越多&#xff0c;花费时间也越来越漫长。因此如何让电脑能够快速启动、一开机就进入Windows&#xff0c;就成为…

科骏达导航端口测试软件,不用端口检测工具也可以知道机器端口,波特,分辨率...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1. 富威&#xff1a; COM2/48002. 索菱、索莱特&#xff1a; COM3/96003. 凯振&#xff1a; COM2/96004. 路特仕、图音&#xff1a; COM2/96005. 卡仕达、科骏达&#xff1a; COM1/9600或COM6/48006. 欧华&#xff1a; COM2/96007.…

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

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

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

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

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

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

iview 级联选择组件_iviewui级联选择 如何自定义?

export default {data () {return {value2: [jiangsu, suzhou, zhuozhengyuan],data: [{value: beijing,label: 北京,children: [{value: gugong,label: 故宫},{value: tiantan,label: 天坛},{value: wangfujing,label: 王府井}]}, {value: jiangsu,label: 江苏,children: [{va…

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里。…

服务器响应options,HTTP发送对OPTIONS请求的响应[C]

在接收HTTP响应时出现Response is null错误。我正在开发一个使用行套接字的示例小型HTTP服务器C。HTTP发送对OPTIONS请求的响应[C]我的应用程序中实际上有2个服务器&#xff0c;一个是我用于提供HTML页面的标准Apache服务器&#xff0c;而我的小型服务器将只响应HTML页面中的Ja…

python数组排序sort_详解python中sort排序使用

1.前言 昨天一学妹问我一个关于python的问题&#xff0c;当时在外忙碌&#xff0c;没时间细看。今天看一下&#xff0c;咋一看我还真的不知道这个问题&#xff0c;bookinfo.sort(reverseTrue ,keylambda x:(x[1],x[1]/x[2]))是如何排序的。但是我猜测应该是按照第二个元素排序&…

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

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