mkiselev / yii2-broadcasting
WebSocket广播模块
0.0.2
2017-07-16 22:20 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-20 19:19:53 UTC
README
WebSocket广播模块
本模块受laravel echo启发,并兼容库。
有几种广播工具可供选择
- NullBroadcaster 不做任何事情,只是一个占位符
- LogBroadcaster 将事件广播到应用程序日志
- RedisBroadcaster 使用Redis的Pub/Sub功能进行广播(需要yii2-redis)
- RatchetBroadcaster(即将推出...)
- PusherBroadcaster 使用pusher.com进行广播(即将推出...)
安装
安装此扩展的首选方法是通过 composer。
运行
composer require --prefer-dist mkiselev/yii2-broadcasting "*"
或添加
"mkiselev/yii2-broadcasting": "*"
到您的 composer.json 文件的require部分。
应用程序配置
配置模块以使用某些广播器和配置通道认证回调
'bootstrap' => ['broadcasting'], 'modules' => [ 'broadcasting' => [ 'class' => \mkiselev\broadcasting\Module::class, 'broadcaster' => [ 'class' => \mkiselev\broadcasting\broadcasters\RedisBroadcaster::class, // By default will be used redis application component, but you can configure as you want 'redis' => [ 'class' => \yii\redis\Connection::class, ], // Configure auth callback for private and presitance chanells 'channels' => [ 'signal' => function (\yii\web\User $user) { return $user->can('something'); }, ], ], ], ],
Socket.io服务器配置
此模块可与 laravel-echo-server 兼容
请按照laravel-echo-server的说明进行安装和运行。
使用方法
服务器端
编写您的事件,扩展自 \mkiselev\broadcasting\events\BroadcastEvent,如下所示
<?php namespace common\models; use mkiselev\broadcasting\channels\PrivateChannel; use mkiselev\broadcasting\events\BroadcastEvent; class SignalEvent extends BroadcastEvent { public $someParam = 42; public function broadcastOn() { return new PrivateChannel('signal'); } public function broadcastAs() { return 'new'; } }
并在某处广播它
(new common\models\SignalEvent(['someParam' => 146]))->toOthers()->broadcast();
客户端
注册 mkiselev\broadcasting\assets\EchoAsset,导入socket.io库 https://github.com/tlaverdure/laravel-echo-server#socketio-client-library
window.io = io; window.Echo = new Echo({ broadcaster: 'socket.io', host: window.location.hostname + ':6001' }); Echo.channel('signal') .listen('.new', function(e) { console.log(e.someParam); });