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

我用webman做了一個(gè)接口函數(shù),接口函數(shù)會(huì)等待ws服務(wù)器的數(shù)據(jù),根據(jù)解析的服務(wù)數(shù)據(jù)在返回?cái)?shù)據(jù),請(qǐng)問(wèn)接口函數(shù)怎么做等待處理

lianggan

我用webman做了一個(gè)接口函數(shù),接口函數(shù)會(huì)等待ws服務(wù)器的數(shù)據(jù),根據(jù)解析的服務(wù)數(shù)據(jù)在返回?cái)?shù)據(jù),請(qǐng)問(wèn)接口函數(shù)怎么做等待處理

1607 1 2
1個(gè)回答

walkor 打賞

異步這種直接用webman自定義進(jìn)程處理簡(jiǎn)單些。
新建 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后訪問(wèn) http://127.0.0.1:1234/?device_id=1 。

可以在接口前增加一層nginx代理,用80或者443統(tǒng)一對(duì)外提供服務(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返回?cái)?shù)據(jù)后響應(yīng)的。你把ws調(diào)用改成你實(shí)際的ws調(diào)用。

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

    謝謝大佬,我剛才的測(cè)試工具沒弄對(duì),你寫的例子是對(duì)的,測(cè)試沒問(wèn)題。

  • lianggan 2022-07-27

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

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??