Компонент для дозагрузки контента через websocket. Ускоряет отрисовку виджетов микросервисов до 50% путем распараллеливания обращений к API. Так же можно распараллелить и обработку ресурсоемких задач.
The preferred way to install this extension is through composer.
Either run
composer require larsnovikov/yii2multiresponse
or add
"larsnovikov/yii2multiresponse": "*"
to the require section of your composer.json
file.
- Добавь в конфиге в
modules
:
'yii2multiresponse' => [
'class' => 'vendor\larsnovikov\yii2multiresponse\Module',
'socketUrls' => [
// TODO тут необходимо сконфигурировать пути для виджетов к WebSocket серверу
\vendor\larsnovikov\yii2multiresponse\examples\widgets\HtmlTestWidget::class => [
'ws://socket-test.loc:5005',
'ws://socket-test.loc:5006',
'ws://socket-test.loc:5007'
],
\vendor\larsnovikov\yii2multiresponse\examples\widgets\JsonTestWidget::class => [
'ws://socket-test.loc:5005',
'ws://socket-test.loc:5006',
'ws://socket-test.loc:5007'
]
]
],
- Добавь в конфиге в
components
очередь:
'multiResponseQueue' => array_merge(
[
'class' => \yii\queue\amqp_interop\Queue::class,
'queueName' => 'multiresponse.queue'
],
[
'port' => 5672,
'user' => 'public',
'password' => 'public',
'driver' => yii\queue\amqp_interop\Queue::ENQUEUE_AMQP_LIB,
'dsn' => 'amqp://public:public@172.17.0.1:5672/%2F',
]
),
-
Добавь в конфиге в
bootstrap
название компонента очереди -
Унаследуй свой виджет от
vendor\larsnovikov\yii2multiresponse\widgets\AbstractHtmlWidget
илиvendor\larsnovikov\yii2multiresponse\widgets\AbstractJsonWidget
в зависимости от того какой ответ от WS-сервера надо получить -
Выведи виджет, например:
echo \vendor\larsnovikov\yii2multiresponse\examples\widgets\HtmlTestWidget::widget([
'dataRequest' => new \vendor\larsnovikov\yii2multiresponse\requests\DataRequest(
'@vendor/larsnovikov/yii2multiresponse/widgets/views/empty_container',
\vendor\larsnovikov\yii2multiresponse\examples\widgets\HtmlTestWidget::class,
[
'test1' => rand(0, 9999),
'test2' => rand(0, 9999)
])
]);
- Запусти WSServer
php yii yii2multiresponse/server/start <port>
илиbash socket.sh <port>
, где<port>
- номер порта - Запусти слушателей очередей, например:
php yii multi-response-queue/listen