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');