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

thinkphp如何調(diào)用workman傳值

dpdzq

案例描述:

我要用thinkphp做一個接口,供第三方調(diào)用傳過來數(shù)據(jù),我這邊拿到數(shù)據(jù)后需要通過websocket直接連接通訊服務(wù)器,所以,我只需要workerman作為客戶端使用,不需要作為server端?,F(xiàn)在的問題是thinkphp接口拿到的數(shù)據(jù),如何傳入workerman的客戶端內(nèi)

不勝感激

4568 3 0
3個回答

不敗少龍

為啥不是workerman里面調(diào)用thinkphp里面接口數(shù)據(jù)

  • dpdzq 2021-05-28

    因為并不知道第三方什么時候調(diào)用api,第三方調(diào)用了api傳了數(shù)據(jù),就需要將數(shù)據(jù)通過websocket傳到websocket server去,整個過程沒有web頁面,只是接口或后臺的處理

  • 不敗少龍 2021-05-28

    那你發(fā)送數(shù)據(jù)到websocket server服務(wù)里面 在服務(wù)里面處理傳過來的值的時候 調(diào)用接口數(shù)據(jù)并處理

  • 不敗少龍 2021-05-28

    onMessage里面去做處理第三方的接口

  • dpdzq 2021-05-28

    第三方只能調(diào)用restful接口,但是websocket server只提供websocket,無法提供其他協(xié)議的接口

  • dpdzq 2021-05-28

    @8039:所以我必須在中間再架一層,提供restful接口給第三方用,拿到數(shù)據(jù)通過websocket傳給websocket server

  • dpdzq 2021-05-28

    我單獨用workerman作為客戶端跑,連接websocket server沒有問題,tp寫接口也可以,現(xiàn)在就是不知道tp接口拿到的數(shù)據(jù)如何傳入workerman客戶端?;蛘叽罄袀冇衅渌膶崿F(xiàn)方式也可以,再次感謝

  • 不敗少龍 2021-05-28

    那很前端獲取到接口數(shù)據(jù)直接send給websocket server

  • 不敗少龍 2021-05-28

    不過你可以貼一下代碼 按照我的理解是剛剛說的那樣去做

  • dpdzq 2021-05-28

    @4519:直接send給websocket server倒是可以,但這樣就不是長連接了,用一次連一次的話,太頻繁了

  • 不敗少龍 2021-05-28

    你是用的gateway嗎?
    $data['demo'] = 1233;
    call_user_func([\app\service\common\EventServer\EventServer::class,'demo'],$data);
    接收的值在onMessage里面的類型里面去處理

  • 不敗少龍 2021-05-28

    是用一個程序框架里面的時候

  • dpdzq 2021-05-28

    沒有用到gateway,查了下,網(wǎng)上都說的是gateway做server,gatewayclient與gateway通訊,好像也不太符合

dpdzq

workerman作為客戶端的代碼如下:

require_once __DIR__ . '/../../vendor/workerman/workerman/Autoloader.php';
require_once __DIR__ . '/../../extend/proto/GPBMetadata/Message.php';

use \Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;

$task = new \Workerman\Worker();
$task->onWorkerStart = function ($task) {
// 不支持直接指定http,但是可以用tcp模擬http協(xié)議發(fā)送數(shù)據(jù)
$connection = new \Workerman\Connection\AsyncTcpConnection('ws://xxx.xxx.xxx.xxx:1234');

// 當連接建立成功時,發(fā)送http請求數(shù)據(jù)
$connection->onConnect = function ($connection) {
    $token = "token";
    $user = "user";

    $login_data = login($token, $user);
    $connection->send($login_data);
};

$connection->onMessage = function ($connection, $http_buffer) {
    echo $http_buffer;
};

$connection->onClose = function ($connection) {
    echo "connection closed\n";
};

$connection->onError = function ($connection, $code, $msg) {
    echo "Error code:$code msg:$msg\n";
};

$connection->connect();

};

// 運行worker
Worker::runAll();

上面單獨的這個客戶端代碼我在服務(wù)器上已經(jīng)調(diào)通了

tp的接口我還沒有寫,現(xiàn)在就是不知道tp寫的api拿到的輸入如何傳入這個workderman的客戶端程序里面

dpdzq

網(wǎng)上說的都是在server的worker里面再創(chuàng)建一個worker,text協(xié)議,但是這個是在websocket的server里面,現(xiàn)在我的worker是個client

  • dpdzq 2021-06-29

    這個問題已經(jīng)搞定,確實也可以在這個作為客戶端的worker里面再創(chuàng)建一個text worker監(jiān)聽api傳過來的數(shù)據(jù)

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