larsnovikov / yii2multiresponse
Multiresponse component
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
pkg:composer/larsnovikov/yii2multiresponse
Requires
- consik/yii2-websocket: ^1.0
 - enqueue/amqp-lib: ^0.8.23
 - textalk/websocket: ^1.0
 - yiisoft/yii2: ~2.0.0
 - yiisoft/yii2-queue: ~2.0.0
 
This package is not auto-updated.
Last update: 2025-10-30 02:57:13 UTC
README
Компонент для дозагрузки контента через websocket. Ускоряет отрисовку виджетов микросервисов до 50% путем распараллеливания обращений к API. Так же можно распараллелить и обработку ресурсоемких задач.
Installation
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.
Usage
- Добавь в конфиге в 
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