kriss/yii2-web-msg-sender

使用workerman的Yii2 web消息发送器

安装: 258

依赖: 0

建议者: 0

安全性: 0

星标: 3

关注者: 2

分支: 1

公开问题: 1

类型:yii2-extension

v1.4 2020-12-30 14:05 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:43 UTC


README

使用workerman的Yii2 web消息发送器

安装

安装此扩展的最佳方式是通过Composer

运行以下命令之一:

composer require --prefer-dist kriss/yii2-web-msg-sender "*"

或者将以下内容添加到你的composer.json文件的require部分:

"kriss/yii2-web-msg-sender": "*"

用法

1. 配置

web.phpmain-local.php

<?php
use kriss\webMsgSender\WebMsgSender;

return [
    'components' => [
        // others
        WebMsgSender::COMPONENT_NAME => [
            'class' => WebMsgSender::class,
            // config see WebMsgSender public attributes
            // change like this
            //'socketPort' => 2123
        ],
    ],
];

不要忘记在服务器上打开端口,默认端口为2120(用于socketIO客户端)和2121(用于系统PushApi)。2120必须打开以供客户端连接,2121必须打开以供当前系统(或其他系统)使用curl推送消息。

2. 控制台服务器

console/config中配置

<?php
return [
    'controllerMap' => [
        'web-msg-sender-service' => [
            'class' => \kriss\webMsgSender\ServiceController::class,
        ],
    ],
];

然后通过以下命令启动服务器:

php yii web-msg-sender-service/start

3. 视图客户端

views/layout或其他视图文件中

<?= \kriss\webMsgSender\ClientReceiveWidget::widget(['uid' => Yii::$app->user->id]) ?>

打开浏览器并打开视图

4. 发送一条消息进行测试

<?php
use kriss\webMsgSender\WebMsgSender;
use yii\helpers\Html;

WebMsgSender::getComponent()->getSender()->sendInfo('You Have A Message,' . Html::a('[clickMe]', 'http://www.baidu.com'));

5. 预览

preview

常见问题解答

如何使用socket(配置ssl)的https或wss

双向

  1. SocketIO origin ssl配置

添加配置

use kriss\webMsgSender\WebMsgSender;

return [
    'components' => [
        // others
        WebMsgSender::COMPONENT_NAME => [
            'class' => WebMsgSender::class,
            // others
            'socketOpts' => [
                'ssl' => [
                    'local_cert'  => __DIR__ . '/local-ssl.test.pem', // absolute path
                    'local_pk'    => __DIR__ . '/local-ssl.test.key',
                    'verify_peer' => false,
                ],
            ],
            'receiveSocketUrl' => 'https://local-ssl.test:{port}', // domain must match ssl cert
        ],
    ],
];
  1. 使用Nginx代理转发ssl
server {
  listen 443;

  ssl on;
  ssl_certificate /etc/ssl/local-ssl.test.pem;
  ssl_certificate_key /etc/ssl/local-ssl.test.key;
  ssl_session_timeout 5m;
  ssl_session_cache shared:SSL:50m;
  ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

  location /socket.io
  {
    proxy_pass http://127.0.0.1:2120;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header X-Real-IP $remote_addr;
  }
}