larsnovikov/yii2multiresponse

多响应组件

安装: 8

依赖: 0

建议者: 0

安全: 0

星星: 1

观察者: 2

分支: 0

开放问题: 0

类型:yii2-extension

v1.1 2018-06-19 10:37 UTC

This package is not auto-updated.

Last update: 2024-10-02 21:44:52 UTC


README

通过WebSocket加载内容的组件。通过并行调用API加速微服务小部件的渲染,提高渲染速度可达50%。同时也可以并行处理耗资源任务。

安装

推荐通过 composer 安装此扩展。

运行以下命令

composer require larsnovikov/yii2multiresponse

或者在 composer.json 文件的 require 部分添加以下内容

"larsnovikov/yii2multiresponse": "*"

使用方法

  1. 在配置文件 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'
        ]
    ]
],
  1. 在配置文件 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',
    ]
),
  1. 在配置文件 bootstrap 中添加队列组件的名称

  2. 根据需要从WS服务器接收的响应类型,继承自 vendor\larsnovikov\yii2multiresponse\widgets\AbstractHtmlWidgetvendor\larsnovikov\yii2multiresponse\widgets\AbstractJsonWidget

  3. 输出小部件,例如

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)
                             ])
        ]);

启动

  1. 启动WSServer php yii yii2multiresponse/server/start <port>bash socket.sh <port>,其中 <port> 是端口号
  2. 启动队列监听器,例如: php yii multi-response-queue/listen