PHP code example of osumionline / plugin-websocket

1. Go to this page and download the library: Download osumionline/plugin-websocket library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

osumionline / plugin-websocket example snippets




declare(strict_types=1);

namespace Osumi\OsumiFramework\App\Task;

use Osumi\OsumiFramework\Core\OTask;
use Osumi\OsumiFramework\Plugins\OWebsocket\OWebsocket;

class StartServerTask extends OTask {
  public function run(array $options=[]): void {
    OWebsocket::setValidateMethod([$this, 'validateToken']);
    OWebsocket::loadActions();
    OWebsocket::start();
  }

  public function validateToken(string $token): ?array {
    if ($token === 'test-token') {
      return [
        'id' => 1,
        'name' => 'Admin'
      ];
    }

    return null;
  }
}



declare(strict_types=1);

use Osumi\OsumiFramework\Plugins\OWebsocket\OWebsocketAction;
use Osumi\OsumiFramework\App\Websocket\Modules\PingComponent;
use Osumi\OsumiFramework\App\Websocket\Modules\LoginComponent;
use Osumi\OsumiFramework\App\Websocket\Modules\SendMessageComponent;

OWebsocketAction::register('ping', PingComponent::class);
OWebsocketAction::register('login', LoginComponent::class);
OWebsocketAction::register('send-message', SendMessageComponent::class, true);

$component->render($request);



declare(strict_types=1);

namespace Osumi\OsumiFramework\App\Websocket\Modules;

use Osumi\OsumiFramework\Core\OComponent;
use Osumi\OsumiFramework\Web\ORequest;

class PingComponent extends OComponent {
  public string $status = 'ok';
  public array $data = [];

  public function run(ORequest $req): void {
    $this->data = [
      'message' => 'pong'
    ];
  }
}

OWebsocket::setValidateMethod(callable $validate_method);

function (string $token): ?array

public function validateToken(string $token): ?array {
  if ($token === 'test-token') {
    return [
      'id' => 1,
      'name' => 'Admin'
    ];
  }

  return null;
}

OWebsocket::setUserData($id, $token, $data);

OWebsocket::setUserData(
  1,
  'test-token',
  [
    'name' => 'Admin',
    'role' => 'admin'
  ]
);

OWebsocket::getUserData();

OWebsocket::getUserData(1);

OWebsocket::clearUserData();

OWebsocket::clearUserData(1);

OWebsocket::send($json);

OWebsocket::sendToUser($id, $json);

OWebsocket::broadcast($json);

OWebsocket::broadcastAuthenticated($json);

OWebsocket::getDebugInfo();

$debug = OWebsocket::getDebugInfo();


## Estructura recomendada en la aplicación



Ejemplo de error: