https://github.com/uzdevid/yii2-websocket
https://github.com/uzdevid/yii2-websocket
Last synced: 10 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/uzdevid/yii2-websocket
- Owner: uzdevid
- Created: 2023-11-13T12:49:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-17T08:52:04.000Z (10 months ago)
- Last Synced: 2025-04-02T06:35:43.430Z (about 2 months ago)
- Language: PHP
- Size: 76.2 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WebSocket Application for Yii2 framework
Yii2 WebSocket Application is a powerful and flexible extension for the Yii2 framework that enables developers to integrate a WebSocket server into their applications. Built on top of the `workerman/workerman` package, this extension is ideal for creating real-time features such as chats, notifications, online games, and other interactive applications that require a persistent connection to the server.
### Installation
```bash
composer require uzdevid/yii2-websocket
```### Usage
Application configuration similar to the default application.
Create config file `/socket/config/main.php`
```php
use UzDevid\WebSocket\Server\WebSocketServer;$params = array_merge(
require __DIR__ . '/../../common/config/params.php',
require __DIR__ . '/params.php',
);return [
'id' => 'web-socket-app',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'socket\\controllers',
'webSocketServer' => [
'class' => WebSocketServer::class,
'host' => '0.0.0.0',
'port' => 8080,
'count' => 1
],
'components' => [],
'params' => $params,
];
```With the current settings, the web socket server will listen on `0.0.0.0:8080`. Count of workers: 1
---
Message processing occurs through the controller and action. Create `/socket/EchoController` controller.```php
namespace socket\controllers;use UzDevid\WebSocket\Controller;
use UzDevid\WebSocket\Server\Dto\Client;class EchoController extends Controller {
/**
* @param Client $client
* @param array $payload
* @return void
*/
public function actionEcho(Client $client, array $payload): void {
$client->user->send('echo:echo', ['currentTime' => time()]);
}
}
```---
Create entry point file named `/run`
```php
#!/usr/bin/env php
/**
* Yii WebSocket bootstrap file.
*/
use UzDevid\WebSocket\Application;require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/common/сonfig/bootstrap.php';
require __DIR__ . '/socket/сonfig/bootstrap.php';$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/common/сonfig/main.php',
require __DIR__ . '/socket/сonfig/main.php',
);$application = new Application($config);
$application->run();
```---
To start the server you need to run the command:
```bash
php /run start
```For testing, we can use the Postman program. You need to create a web socket connection. You need to create a web socket connection with port `ws://0.0.0.0:8080`, which is specified in the application configuration.
Message Body Format.
```json
{
"method": "echo:echo",
"payload": {}
}
```
The `method` parameter is similar to a regular url, the only difference is in the separator `:` What is specified in the payload parameter You can get them in the action arguments.