作为一位CV工程师,使用此框架太难了

exzhang

来个好心的大哥指教一下啊~

问题描述

我在webman里安装了GatewayWorker,使用时候不知道怎么将在onMessage接受到的数据转发到控制器里去做逻辑处理。

为此你搜索到了哪些方案及不适用的原因

就好比说GatewayWorker手册里面-》与webman结合时,没有示例,提示如需使用mysql redis等组件参考webman手册,但是去webman手册里,根本没有如何使用GatewayWorker的手册,我太难了

其他解决方案

搜索答案的时候有看到说将接收到的数据发送给前端,让前端以ajax方式再将数据发送到后端,这样合理吗?感觉有点麻烦,gatewaywork里没有内置的方法直接转发到后端控制器里吗?

697 7 2
7个回答

胡桃

截图

  • 咸鱼.php 14天前

    大哥,你是怎么回复图片的!!!

  • meows 8天前

    能直接插入img 标签?哈哈哈

  • suihua 6天前

    <img src="/upload/img/20240904/0466d828472c2f.png" alt="截图">

walkor

https://www.workerman.net/doc/gateway-worker/webman.html
GatewayWorker手册里面-》与webman结合 里有步骤,讲的是将gatewayWorker以插件的方式与webman结合起来,这样就可以调用webman里的类,包括控制器类。
控制器也是类,调用和普通类一样,类似

$controller = new UserController();
$controller->get();

但是控制器里会使用http独有的$request对象获取GET POST请求处理业务,而gatewayWorker调用控制器时没有$request对象,无法直接调用。
所以一般来讲应该将业务逻辑独立出来,例如放到app/service目录下。控制器和gatewayWorker都调用service目录里的类方法。

app/service/User.php

<?php
namespace app\service;
class User {
    public static function get($uid) {...}
}

app/controller/UserController.php

<?php
namespace app\controller;
use app\service\User;
class UserController {
    public function get($request) {
        return User::get($request->get('id'));
    }
}

plugin/webman/gateway/Events.php

<?php

namespace plugin\webman\gateway;

use GatewayWorker\Lib\Gateway;
use app\service\User;
class Events
{
    public static function onMessage($client_id, $message)
    {
        $data = json_decode($message, true);
        $uid = $data['uid'];
        $user = User::get($uid);
        Gateway::sendToClient($client_id, json_encode($user));
    }
}

这样把业务逻辑独立出来,可以让控制器和GatewayWorker复用

释永战

  • 暂无评论
故人重来

我靠使用这个框架都难,岂不是Laravel直接看不懂了。

  • 暂无评论

有点意思这个问题

  • 暂无评论
wocall

TM

  • 暂无评论
×
🔝