# في
**``` (يتطلب Workerman الإصدار 3.3.0 فأعلى) ```**
```php
void \Channel\Client::on(string $event_name, callback $callback_function)

اشتراك في حدث $event_name وتسجيل دالة الاستدعاء $callback_function عند حدوث الحدث

معاملات الدالة الاستدعاء

$event_name

اسم الحدث المشترك فيه، يمكن أن يكون أي سلسلة نصية.

$callback_function

دالة ارتداء تنشط عند حدوث الحدث. الصيغة الأصلية للدالة هي callback_function(mixed $event_data). $event_data هو البيانات التي يتم نشرها عند حدوث الحدث.

تنويه:

إذا تم تسجيل دالتي استدعاء لنفس الحدث، ستحل الدالة الاستدعاء الثانية محل الدالة الاستدعاء الأولى.

مثال

عامل (Worker) متعدد العمليات (متعدد الخواديم)، عميل واحد يرسل رسالة وتبث لجميع العملاء

start.php

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

// بدء سيرفر Channel
$channel_server = new Channel\Server('0.0.0.0', 2206);

// سيرفر websocket
$worker = new Worker('websocket://0.0.0.0:4236');
$worker->name = 'websocket';
$worker->count = 6;
// عند بدء كل عملية worker
$worker->onWorkerStart = function($worker)
{
    // العميل Channel يتصل بسيرفر Channel
    Channel\Client::connect('127.0.0.1', 2206);
    // الاشتراك في حدث البث (broadcast) وتسجيل دالة استدعاء الحدث
    Channel\Client::on('broadcast', function($event_data)use($worker){
        // نقل رسالة لجميع عمليات الـ worker الحالية
        foreach($worker->connections as $connection)
        {
            $connection->send($event_data);
        }
    });
};

$worker->onMessage = function(TcpConnection $connection, $data)
{
   // استخدام البيانات التي أرسلها العميل كبيانات الحدث
   $event_data = $data;
   // بث حدث البث (broadcast) لجميع عمليات الـ worker
   \Channel\Client::publish('broadcast', $event_data);
};

Worker::runAll();

الاختبار

افتح متصفح Chrome، ثم اضغط على F12 لفتح لوحة التحكم، في علامة Console قم بكتابة (أو ضع الكود التالي في صفحة HTML ثم قم بتشغيله بواسطة JavaScript)

الاتصال الذي يستقبل الرسائل

// قم بتغيير 127.0.0.1 بعنوان Workerman الفعلي
ws = new WebSocket("ws://127.0.0.1:4236");
ws.onmessage = function(e) {
    alert("تلقيت رسالة من السيرفر: " + e.data);
};

بث الرسالة

ws.send('مرحبا بالعالم');