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

这是一个测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值