#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()
содержит данные