সহজ উন্নয়ন উদাহরণ

ইনস্টলেশন

workerman ইনস্টল করুন
একটি খালি ডিরেক্টরিতে চালান
composer require workerman/workerman

উদাহরণ ১, HTTP প্রোটোকল ব্যবহার করে ওয়েব পরিষেবা সরবরাহ করা

start.php ফাইল তৈরি করুন

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

// 2345 পোর্ট শুনতে একটি Worker তৈরি করুন, http প্রোটোকল যোগাযোগ ব্যবহার করুন
$http_worker = new Worker("http://0.0.0.0:2345");

// পরিষেবা সরবরাহের জন্য ৪টি প্রক্রিয়া শুরু করুন
$http_worker->count = 4;

// যখন ব্রাউজার পাঠানো ডেটা পাওয়া যায়, তখন ব্রাউজারকে hello world উত্তর দিন
$http_worker->onMessage = function(TcpConnection $connection, Request $request)
{
    // ব্রাউজারকে hello world পাঠান
    $connection->send('hello world');
};

// ওয়ার্কার চালান
Worker::runAll();

কমান্ড লাইন চালানো (Windows ব্যবহারকারীরা cmd কমান্ড লাইন ব্যবহার করুন, পরবর্তী ক্ষেত্রে একই)

php start.php start

পরীক্ষা

ধরি সার্ভারের আইপি 127.0.0.1

ব্রাউজারে URL http://127.0.0.1:2345 এ অ্যাক্সেস করুন

দ্রষ্টব্য:

  1. যদি প্রবেশে সমস্যা হয় তবে ক্লায়েন্ট সংযোগ ব্যর্থতার কারণ বিভাগটি অনুসরণ করুন।

  2. সার্ভার http প্রোটোকল, কেবল http প্রোটোকল যোগাযোগের জন্য ব্যবহৃত হয়, websocket বা অন্যান্য প্রোটোকল সরাসরি যোগাযোগ করতে পারে না।

উদাহরণ ২, WebSocket প্রোটোকল ব্যবহার করে পরিষেবা সরবরাহ করা

ws_test.php ফাইল তৈরি করুন

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

// দ্রষ্টব্য: এটি পূর্ববর্তী উদাহরণের থেকে আলাদা, এটি websocket প্রোটোকল ব্যবহার করছে
$ws_worker = new Worker("websocket://0.0.0.0:2000");

// পরিষেবা সরবরাহের জন্য ৪টি প্রক্রিয়া শুরু করুন
$ws_worker->count = 4;

// ক্লায়েন্ট থেকে পাঠানো ডেটা পাওয়া গেলে hello $data ক্লায়েন্টকে ফেরত দিন
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
    // ক্লায়েন্টকে hello $data পাঠান
    $connection->send('hello ' . $data);
};

// ওয়ার্কার চালান
Worker::runAll();

কমান্ড লাইন চালানো

php ws_test.php start

পরীক্ষা

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

// ধরি সার্ভারের আইপি 127.0.0.1
ws = new WebSocket("ws://127.0.0.1:2000");
ws.onopen = function() {
    alert("সংযোগ সফল");
    ws.send('tom');
    alert("সার্ভারে একটি স্ট্রিং পাঠান: tom");
};
ws.onmessage = function(e) {
    alert("সার্ভার থেকে বার্তা পাওয়া গেল: " + e.data);
};

দ্রষ্টব্য:

  1. যদি প্রবেশে সমস্যা হয় তবে হ্যান্ডবুক সাধারণ সমস্যা - সংযোগ ব্যর্থ বিভাগটি অনুসরণ করুন।

  2. সার্ভার websocket প্রোটোকল, কেবল websocket প্রোটোকল যোগাযোগের জন্য ব্যবহৃত হয়, http বা অন্যান্য প্রোটোকল সরাসরি যোগাযোগ করতে পারে না।

উদাহরণ ৩, সরাসরি TCP ডেটা স্থানান্তর করা

tcp_test.php তৈরি করুন

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

// 2347 পোর্ট শুনতে একটি Worker তৈরি করুন, কোন অ্যাপ্লিকেশন স্তরের প্রোটোকল ব্যবহার না করে
$tcp_worker = new Worker("tcp://0.0.0.0:2347");

// পরিষেবা সরবরাহের জন্য ৪টি প্রক্রিয়া শুরু করুন
$tcp_worker->count = 4;

// যখন ক্লায়েন্ট থেকে ডেটা আসে
$tcp_worker->onMessage = function(TcpConnection $connection, $data)
{
    // ক্লায়েন্টকে hello $data পাঠান
    $connection->send('hello ' . $data);
};

// ওয়ার্কার চালান
Worker::runAll();

কমান্ড লাইন চালানো

php tcp_test.php start

পরীক্ষা: কমান্ড লাইন চালানো
(নিচেরটি Linux কমান্ড লাইনের প্রভাব, Windows এ প্রভাব কিছুটা ভিন্ন)

telnet 127.0.0.1 2347
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
tom
hello tom

দ্রষ্টব্য:

  1. যদি প্রবেশে সমস্যা হয় তবে হ্যান্ডবুক সাধারণ সমস্যা - সংযোগ ব্যর্থ বিভাগটি অনুসরণ করুন।

  2. সার্ভার হল ন্যাড়া tcp প্রোটোকল, websocket, http বা অন্যান্য প্রোটোকল সরাসরি যোগাযোগ করতে পারে না।