laravel swoole 安装使用

  1. 准备好laravel 框架

  2. 所需环境准备好 PHP7.0以上 等等。。。

  3. 安装swoole扩展

    pecl install swoole
    

    查看是否成功安装扩展

    php -m	
    

    显示以下,代表成功安装。
    在这里插入图片描述

  4. 安装swoole 4.3.4

    链接: https://pan.baidu.com/s/155y4ZHq9lTn9MkjP_v3x3w 提取码: sf4m 复制这段内容后 
    

    下载解压。。

    tar -xzvf v4.3.4.tar.gz
    

    进入到解压好的目录

    phpize && ./configure --with-php-config=/usr/local/php/bin/php-config(根据自己的环境替换绝对路径)
    
    make && make install
    

    若以上安装有提示报错,分开执行
    验证是否安装成功

    php --ri swoole
    

    查看版本

    php --ri swoole | grep Version
    
  5. 如果以上安装成功,请忽略 ,,,,通过composer安装

    composer require swooletw/laravel-swoole
    
  6. 生成配置文件,运行以下命令在/config命令看生成配置文件swoole_http.php并swoole_websocket.php

    php artisan vendor:publish --tag=laravel-swoole
    
  7. 在 Laravel 应用中使用 Swoole 之前,先通过 Composer 安装 LaravelS 扩展包:

    composer require hhxsv5/laravel-s
    

    该命令会发布配置文件 laravels.php 到 config 目录下,以及脚本文件到 bin 目录下

    php artisan laravels publish
    

    如果想用websocket,在config/laravels.php下

    'websocket'                => [
        'enable' => true,
        'handler' => \app\Services\WebSocketService::class,
    ],
    
    namespace App\Services;
    
    use Hhxsv5\LaravelS\Swoole\WebSocketHandlerInterface;
    use Illuminate\Support\Facades\Log;
    use Swoole\Http\Request;
    use Swoole\WebSocket\Frame;
    use Swoole\WebSocket\Server;
    
    class WebSocketService implements WebSocketHandlerInterface
    {
        public function __construct()
        {
    
        }
    
        // 连接建立时触发
        public function onOpen(Server $server, Request $request)
        {
            // 在触发 WebSocket 连接建立事件之前,Laravel 应用初始化的生命周期已经结束,你可以在这里获取 Laravel 请求和会话数据
            // 调用 push 方法向客户端推送数据,fd 是客户端连接标识字段
    
            Log::info('WebSocket 连接建立');
            $server->push($request->fd, 'Welcome to WebSocket Server built on LaravelS');
        }
    
        // 收到消息时触发
        public function onMessage(Server $server, Frame $frame)
        {
            $server->push($frame->fd, 'This is a message sent from WebSocket Server at ' . date('Y-m-d H:i:s'));
        }
    
        // 关闭连接时触发
        public function onClose(Server $server, $fd, $reactorId)
        {
            Log::info('WebSocket 连接关闭');
        }
    }
    

    此时根目录会多出一个bin目录

    在这里插入图片描述

    使用该命令启动  php laravels start
    

在这里插入图片描述
通过JS测试

ws = new WebSocket("ws://0.0.0.0:1215");
ws.onopen = function() {
     var msg_obj = { "id": 22, "hello": "hello"};
    var msg = JSON.stringify(msg_obj);
    ws.send(msg);
};
ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
};
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值