মৌলিক প্রক্রিয়া

(একটি সহজ Websocket চ্যাটরুম সার্ভার উদাহরণ হিসেবে)

1. যেকোনো স্থানে প্রকল্পের ডিরেক্টরি তৈরি করুন

যেমন SimpleChat/
ডিরেক্টরিতে প্রবেশ করে composer require workerman/workerman চালান।

2. vendor/autoload.php অন্তর্ভুক্ত করুন (composer ইনস্টল করার পর তৈরি হয়)

start.php তৈরি করুন, vendor/autoload.php অন্তর্ভুক্ত করুন

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

3. প্রোটোকল নির্ধারণ করুন

এখানে আমরা Text টেক্সট প্রোটোকল নির্বাচিত করেছি (Workerman-এ কাস্টমাইজড একটি প্রোটোকল, ফরম্যাট হল টেক্সট+লাইন পরিবর্তন)

(বর্তমানে Workerman HTTP, Websocket, Text টেক্সট প্রোটোকল সমর্থন করে, যদি অন্য প্রোটোকল ব্যবহার করতে চান, দয়া করে প্রোটোকল অধ্যায়ের নির্দেশাবলী অনুসরণ করুন)

4. প্রয়োজন অনুযায়ী এন্ট্রি স্টার্ট স্ক্রিপ্ট লিখুন

উদাহরণস্বরূপ, নিচে এটি একটি সহজ চ্যাটরুমের এন্ট্রি ফাইল।

SimpleChat/start.php

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

$global_uid = 0;

// যখন ক্লায়েন্ট সংযুক্ত হয় তখন uid বরাদ্দ করুন, সংযোগ সংরক্ষণ করুন এবং সমস্ত ক্লায়েন্টকে অবগত করুন
function handle_connection($connection)
{
    global $text_worker, $global_uid;
    // এই সংযোগের জন্য একটি uid বরাদ্দ করুন
    $connection->uid = ++$global_uid;
}

// যখন ক্লায়েন্ট বার্তা পাঠায়, তখন সেটি সকলের কাছে ফরওয়ার্ড করুন
function handle_message(TcpConnection $connection, $data)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] said: $data");
    }
}

// যখন ক্লায়েন্ট ডিসকানেক্ট হয়, তখন এটি সমস্ত ক্লায়েন্টকে সম্প্রচার করুন
function handle_close($connection)
{
    global $text_worker;
    foreach($text_worker->connections as $conn)
    {
        $conn->send("user[{$connection->uid}] logout");
    }
}

// 2347 ইন্টারফেসে একটি টেক্সট প্রোটোকলের Worker তৈরি করুন
$text_worker = new Worker("text://0.0.0.0:2347");

// শুধুমাত্র 1টি প্রক্রিয়া শুরু করুন, যাতে ক্লায়েন্টদের মধ্যে ডেটা স্থানান্তর সহজ হয়
$text_worker->count = 1;

$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';

Worker::runAll();

5. পরীক্ষা করুন

Text প্রোটোকল টেলনেট কমান্ড ব্যবহার করে পরীক্ষা করা যেতে পারে

telnet 127.0.0.1 2347