on

(কর্মকারকের সংস্করণ>=3.3.0)

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 হল ইভেন্ট প্রকাশ করার সময় (publish) প্রেরিত ইভেন্ট ডেটা।

注意:

যদি একই ইভেন্টের জন্য দুটি কলব্যাক ফাংশন নিবন্ধিত হয়, তবে পরে নিবন্ধিত কলব্যাক ফাংশন পূর্বের কলব্যাক ফাংশনকে ওভাররাইট করবে।

উদাহরণ

মাল্টি-প্রসেস ওয়ার্কার (মাল্টি-সার্ভার), একটি ক্লায়েন্ট বার্তা পাঠায়, সব ক্লায়েন্টকে সম্প্রচার করে।

start.php

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

// একটি চ্যানেল সার্ভার শুরু করুন
$channel_server = new Channel\Server('0.0.0.0', 2206);

// ওয়েবসকেট সার্ভার
$worker = new Worker('websocket://0.0.0.0:4236');
$worker->name = 'websocket';
$worker->count = 6;
// প্রতিটি ওয়ার্কার প্রক্রিয়া শুরু হওয়ার সময়
$worker->onWorkerStart = function($worker)
{
    // চ্যানেল ক্লায়েন্ট চ্যানেল সার্ভারে সংযোগ করছে
    Channel\Client::connect('127.0.0.1', 2206);
    // broadcast ইভেন্টে সাবস্ক্রাইব করুন এবং ইভেন্ট কলব্যাক নিবন্ধন করুন
    Channel\Client::on('broadcast', function($event_data)use($worker){
        // বর্তমান ওয়ার্কার প্রক্রিয়ার সমস্ত ক্লায়েন্টকে বার্তা সম্প্রচার করুন
        foreach($worker->connections as $connection)
        {
            $connection->send($event_data);
        }
    });
};

$worker->onMessage = function(TcpConnection $connection, $data)
{
   // ক্লায়েন্ট দ্বারা পাঠানো ডেটাকে ইভেন্ট ডেটা হিসাবে গ্রহণ করুন
   $event_data = $data;
   // সমস্ত ওয়ার্কার প্রক্রিয়াতে broadcast ইভেন্ট প্রকাশ করুন
   \Channel\Client::publish('broadcast', $event_data);
};

Worker::runAll();

পরীক্ষা

ক্রোম ব্রাউজার খুলে, F12 চাপুন ডিবাগ কনসোল খোলার জন্য, Console বিভাগে টাইপ করুন (বা নিচের কোডটি HTML পৃষ্ঠায় JS ব্যবহার করে চালান)

বার্তা পাওয়ার সংযোগ

// 127.0.0.1 কে প্রকৃত কর্মকারকের আইপির সাথে প্রতিস্থাপন করুন
ws = new WebSocket("ws://127.0.0.1:4236");
ws.onmessage = function(e) {
    alert("সার্ভার থেকে বার্তা প্রাপ্ত হয়েছে:" + e.data);
};

বার্তা সম্প্রচার করুন

ws.send('hello world');