国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

我用webman做了一個接口函數(shù),接口函數(shù)會等待ws服務(wù)器的數(shù)據(jù),根據(jù)解析的服務(wù)數(shù)據(jù)在返回數(shù)據(jù),請問接口函數(shù)怎么做等待處理

lianggan

我用webman做了一個接口函數(shù),接口函數(shù)會等待ws服務(wù)器的數(shù)據(jù),根據(jù)解析的服務(wù)數(shù)據(jù)在返回數(shù)據(jù),請問接口函數(shù)怎么做等待處理

1507 1 2
1個回答

walkor 打賞

異步這種直接用webman自定義進程處理簡單些。
新建 process/Api.php

<?php
namespace process;

use Workerman\Protocols\Http\Request;
use Workerman\Connection\AsyncTcpConnection;

class Api
{
    public function onMessage($connection, Request $request)
    {
        $device_id = $request->get('device_id');
        $ws = new AsyncTcpConnection('ws://127.0.0.1:2022');
        $ws->onMessage = function ($ws, $data) use ($connection) {
            $connection->send($data);
            $ws->close();
        };
        $ws->onConnect = function ($ws) use ($device_id) {
            $ws->send($device_id);
        };
        $ws->connect();
    }
}

config/process.php中增加配置

return [
    //   這里省略了其它配置....

    'api' => [
        'handler' => \process\Api::class,
        'listen'  => 'http://0.0.0.0:1234',
    ]
];

重啟webman后訪問 http://127.0.0.1:1234/?device_id=1 。

可以在接口前增加一層nginx代理,用80或者443統(tǒng)一對外提供服務(wù),方便一些。

  • lianggan 2022-02-24

    @walkor 我按照你上面的方法建立好后,調(diào)用http://127.0.0.1:1234/?device_id=1沒反應(yīng)。

  • walkor 2022-02-24

    你的需求不是在ws響應(yīng)后才返回http響應(yīng)么?響應(yīng)是在ws返回數(shù)據(jù)后響應(yīng)的。你把ws調(diào)用改成你實際的ws調(diào)用。

    $ws->onMessage = function ($ws, $data) use ($connection) {
         // 這里發(fā)送響應(yīng)
         $connection->send($data);
         $ws->close();
    };
  • lianggan 2022-02-24

    謝謝大佬,我剛才的測試工具沒弄對,你寫的例子是對的,測試沒問題。

  • lianggan 2022-07-27

    大佬,此例程每次new AsyncTcpConnection('ws://127.0.0.1:2022');接受到數(shù)據(jù)就關(guān)閉,開始沒問題,次數(shù)多了,發(fā)現(xiàn)會很慢,能不能讓new AsyncTcpConnection('ws://127.0.0.1:2022');一直開起,不關(guān)閉。

年代過于久遠,無法發(fā)表回答
??