Не удается получить данные CURL с помощью SocketIO в YII2?

#php #websocket #socket.io #yii2

#php #websocket #socket.io #yii2

Вопрос:

URL: — http://localhost:2121/?type=publishamp;content=testingamp;to=1191 Я использую это расширение для добавления веб-push-уведомлений.

До сих пор я легко настраивал его правильно без каких-либо ошибок, но я не могу получить данные post в функции сокета, через которую я не могу продолжить.

Отправка данных с помощью GuzzleHttp :-

   $pushApiUrl = $this->webMsgSender->getPushApiClientUrl(); // http://localhost:2121/
        $response = (new GuzzleHttpClient())->post($pushApiUrl, [
            'form_params' => [
                'content' => $msg,
                'to' => $to,
                'type' => $data->type ?? 'publish',
            ],
        ]);
 

Функция, в которой мне нужны данные $ _POST:-

   // When $socketIo is started, it listens to an http port, through which data can be pushed to any uid or all uids
        $this->socketIo->on('workerStart', function () {
            // listen to an http port
            echo "I am listeining to ".$this->webMsgSender->getPushApiServerUrl();
            $innerHttpWorker = new Worker($this->webMsgSender->getPushApiServerUrl());
            // Triggered when the http client sends data
            $innerHttpWorker->onMessage = function (TcpConnection $httpConnection,$data) {
                $uidConnectionMap = $this->globalData['uidConnectMap'];
                $requestParams = $_POST ?: $_GET;
                // URL format of push data type=publishamp;to=uidamp;content=xxxx
                $model = new ClientSendModel(['socketIo' => $this->socketIo]);
                echo 'requestParams';
                echo PHP_EOL;
                print_R($requestParams);//NOT WORKING
                echo PHP_EOL;
                print_R($_REQUEST);//NOT WORKING
                if ($model->load($requestParams, '') amp;amp; $model->validate()) {
                    if ($model->to amp;amp; !isset($uidConnectionMap[$model->to])) {
                        return $httpConnection->send('offline');
                    }
                    $model->send();
                    return $httpConnection->send('ok');
                }
                return $httpConnection->send('fail');
            };
            
            $innerHttpWorker->listen();
        });
 

Ссылка на пример Laravel:-

Ответ №1:

Я понял это

  ```$innerHttpWorker->onMessage = function (TcpConnection $httpConnection,$request) {
            $uidConnectionMap = $this->globalData['uidConnectMap'];
            $requestParams = $_POST ?: $_GET;
            $this->webMsgSender->logger('requestParams');
            $this->webMsgSender->logger($requestParams);
            $this->webMsgSender->logger($_SERVER ??'EMPTY SERVER VARIABLE');
            $this->webMsgSender->logger('workerStart_data');
            $this->webMsgSender->logger('TcpConnection');
            $this->webMsgSender->logger($request->post());
            echo "I AM HERE";
            print_R($request->post());```
 

$innerHttpWorker->onMessage = function (TcpConnection $httpConnection,$request) {
Теперь $request->post() содержит данные