jakharbek / yii2-chat
Chat
Installs: 103
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 1
Open Issues: 1
Type:yii2-extension
Requires
- cboden/ratchet: dev-master
- yii2tech/ar-softdelete: ^1.0@dev
- yiisoft/yii2: ~2.0.0
This package is not auto-updated.
Last update: 2025-03-11 19:36:32 UTC
README
Chat
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist jakharbek/yii2-chat "*"
or add
"jakharbek/yii2-chat": "*"
to the require section of your composer.json
file.
Directory Structure
api/ api
assets/ assets
command/ daimons and console
dto/ data transfer object
exceptions/ exceptions
factory/ factories
forms/ forms
interfaces/ interfaces
migrations/ migrations
models/ models
repositories/ repositories
services/ services
Usage
В данном расширение нет разделение разрешение и прав доступа, данную особеность осталось на ваши усмотрение для больее гибкости расширение.
Для начало использование вам следует применить миграции:
yii migrate --migrationPath=@vendor/jakharbek/yii2-chat/migrations
после вам нужно применить Bootstrap класс.
\jakharbek\chat\Bootstrap
API
Для его использование вам нужно подключить контроллер.
... controllerMap => [ 'server' => \jakharbek\chat\api\ChatController::class ] ...
или же можете скопировать его или взять от него наследование и подключить это тоже на ваше усмотрение
Подключение сокета
Запуск веб-сокета сервера
Вам нужно подключить в ваше консольное приложение контроеллер веб-сокета:
... controllerMap => [ 'server' => \jakharbek\chat\commands\ServerController::class ] ...
После запустить это консольную комманду как daimon. На пример
php yii server/start [port]
Подключение asset'а
\jakharbek\chat\assets\ChatAsset::register($this);
Пример подключение сокет клиента.
$js = <<<JS var chat = new ChatClient("ws://localhost:8080",'{$token}','{chat_id}'); chat.onMessage = function(type,data,event){ //сдесь будет ваша логика для UI } chat.init(); $(".msg_send_btn").click(function () { chat.sendMessage($('.write_msg').val()); }); JS; $this->registerJs($js);