# on
**``` (Workerman-Version >=3.3.0 erforderlich) ```**
```php
void \Channel\Client::on(string $event_name, callback $callback_function)

Abonniere das Ereignis $event_name und registriere die Callback-Funktion $callback_function, die auftritt, wenn das Ereignis eintritt.

Parameter der Callback-Funktion

$event_name

Der Name des abonnierten Ereignisses, der beliebig sein kann.

$callback_function

Die Callback-Funktion, die aufgerufen wird, wenn das Ereignis eintritt. Die Prototyp der Funktion ist callback_function(mixed $event_data). $event_data ist die Ereignisdaten, die beim Veröffentlichen des Ereignisses übergeben wurden.

Beachte:

Wenn dieselbe Veranstaltung zwei Callback-Funktionen registriert, wird die zweite Callback-Funktion die erste überschreiben.

Beispiel

Multiprozess-Worker (Mehrere Server), ein Client sendet eine Nachricht an alle Clients.

start.php

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// Initialize a Channel server
$channel_server = new Channel\Server('0.0.0.0', 2206);

// WebSocket Server
$worker = new Worker('websocket://0.0.0.0:4236');
$worker->name = 'websocket';
$worker->count = 6;
// When each worker process starts
$worker->onWorkerStart = function($worker)
{
    // Channel client connects to the Channel server
    Channel\Client::connect('127.0.0.1', 2206);
    // Subscribe to broadcast event and register event callback
    Channel\Client::on('broadcast', function($event_data)use($worker){
        // Broadcast message to all client connections of the current worker process
        foreach($worker->connections as $connection)
        {
            $connection->send($event_data);
        }
    });
};

$worker->onMessage = function(TcpConnection $connection, $data)
{
   // Treat the data sent by the client as event data
   $event_data = $data;
   // Publish broadcast event to all worker processes
   \Channel\Client::publish('broadcast', $event_data);
};

Worker::runAll();

Test

Open Chrome browser, press F12 to open the debugging console, and enter the following code in the Console column (or put the following code into an HTML page to run with JavaScript)

Receive message connection

// Replace 127.0.0.1 with the actual Workerman IP
ws = new WebSocket("ws://127.0.0.1:4236");
ws.onmessage = function(e) {
    alert("Received message from the server: " + e.data);
};

Broadcast message

ws.send('hello world');