kriss / yii2-web-msg-sender
使用workerman的Yii2 web消息发送器
v1.4
2020-12-30 14:05 UTC
Requires
- workerman/gatewayclient: ^3.0
- workerman/phpsocket.io: ^1.1
- yiisoft/yii2: ~2.0.0
README
使用workerman的Yii2 web消息发送器
安装
安装此扩展的最佳方式是通过Composer。
运行以下命令之一:
composer require --prefer-dist kriss/yii2-web-msg-sender "*"
或者将以下内容添加到你的composer.json
文件的require部分:
"kriss/yii2-web-msg-sender": "*"
用法
1. 配置
在web.php
或main-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. 预览
常见问题解答
如何使用socket(配置ssl)的https或wss
双向
- 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 ], ], ];
- 使用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;
}
}