Hyperf安装完成后的基本设置

Centos 安装 Swoole框架Hyperf过程_菠菜的专栏-CSDN博客
前文说了安装过程,现在说说一些基本配置。
1,启动界面输出了太多无用信息,需要精简
config/config.php
 

return [
    'app_name' => env('APP_NAME', 'skeleton'),
    'app_env' => env('APP_ENV', 'dev'),
    'scan_cacheable' => env('SCAN_CACHEABLE', false),
    StdoutLoggerInterface::class => [
        'log_level' => [
            LogLevel::ALERT,
            LogLevel::CRITICAL,
            //LogLevel::DEBUG,
            LogLevel::EMERGENCY,
            LogLevel::ERROR,
            LogLevel::INFO,
            //LogLevel::NOTICE,
            LogLevel::WARNING,
        ],
    ],
];


注释 LogLevel::DEBUG  和  LogLevel::NOTICE 两行代码。
这个时候重启服务
 

php bin/hyperf.php start
[INFO] Worker#0 started.
[INFO] HTTP Server listening at 0.0.0.0:9501
[INFO] Worker#1 started.

干净清爽了。

2,默认启动的是一个 SERVER_HTTP 短链接服务,现在需要同时启用一个 WEBSOCKET长链接服务并自定义端口。

先安装组件  composer require hyperf/websocket-server
config/autoload/server.php 中的部分代码 如下
 

​
return [
    'mode' => SWOOLE_PROCESS,
    'servers' => [
        [
            'name' => 'http',
            'type' => Server::SERVER_HTTP,
            'host' => '0.0.0.0',
            'port' => (int)env('HTTP_PORT', '9501'),
            'sock_type' => SWOOLE_SOCK_TCP,
            'callbacks' => [
                Event::ON_REQUEST => ['S_HTTP', 'onRequest'],
            ],
        ],
        [
            'name' => 'ws',
            'type' => Server::SERVER_WEBSOCKET,
            'host' => '0.0.0.0',
            'port' => (int)env('WS_PORT', '9502'),
            'sock_type' => SWOOLE_SOCK_TCP,
            'callbacks' => [
                Event::ON_HAND_SHAKE => ['S_WS', 'onHandShake'],
                Event::ON_MESSAGE => ['S_WS', 'onMessage'],
                Event::ON_CLOSE => ['S_WS', 'onClose'],
            ],
        ]
    ],
    'settings' => [...],
    'callbacks' => [...],
    ],
];

​

其中的  S_WS  S_THTP   在  config/autoload/dependencies.php 中定义
 

return [
    //长链别名
    "S_WS"    => Hyperf\WebSocketServer\Server::class,
    //短链别名
    "S_HTTP"  => Hyperf\HttpServer\Server::class,
];

重启服务
 

# php bin/hyperf.php start
[INFO] Worker#0 started.
[INFO] WebSocket Server listening at 0.0.0.0:9502
[INFO] HTTP Server listening at 0.0.0.0:9501
[INFO] Worker#1 started.

9502 端口的长连接服务就启用了。这个时候用 WebSocket Client 访问会出错,需要继续设置路由和对应的Controller

配置路由
文件内增加对应 ws 的 Server 的路由配置,
 

Router::addServer('ws', function () {
    Router::get('/', 'App\Controller\WebSocketController');
});

Router::addRoute(['GET', 'POST', 'HEAD'], '/', 'App\Controller\IndexController@index');

Router::get('/favicon.ico', function () {
    return '';
});

创建对应控制器
 

<?php
declare(strict_types=1);

namespace App\Controller;

use Hyperf\Contract\OnCloseInterface;
use Hyperf\Contract\OnMessageInterface;
use Hyperf\Contract\OnOpenInterface;
use Swoole\Http\Request;
use Swoole\Server;
use Swoole\Websocket\Frame;
use Swoole\WebSocket\Server as WebSocketServer;

class WebSocketController implements OnMessageInterface, OnOpenInterface, OnCloseInterface
{
    public function onMessage($server, Frame $frame): void
    {
        $server->push($frame->fd, 'Recv: ' . $frame->data);
    }

    public function onClose($server, int $fd, int $reactorId): void
    {
        var_dump('closed');
    }

    public function onOpen($server, Request $request): void
    {
        $server->push($request->fd, 'Opened');
    }
}


推荐一个 在线测试工具
在线websocket测试-online tool-postjson

至此你的websocket就建立起来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hangbobo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值