সহজ উন্নয়ন উদাহরণ
ইনস্টলেশন
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 এ অ্যাক্সেস করুন
দ্রষ্টব্য:
-
যদি প্রবেশে সমস্যা হয় তবে ক্লায়েন্ট সংযোগ ব্যর্থতার কারণ বিভাগটি অনুসরণ করুন।
-
সার্ভার 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);
};
দ্রষ্টব্য:
-
যদি প্রবেশে সমস্যা হয় তবে হ্যান্ডবুক সাধারণ সমস্যা - সংযোগ ব্যর্থ বিভাগটি অনুসরণ করুন।
-
সার্ভার 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
দ্রষ্টব্য:
-
যদি প্রবেশে সমস্যা হয় তবে হ্যান্ডবুক সাধারণ সমস্যা - সংযোগ ব্যর্থ বিভাগটি অনুসরণ করুন।
-
সার্ভার হল ন্যাড়া tcp প্রোটোকল, websocket, http বা অন্যান্য প্রোটোকল সরাসরি যোগাযোগ করতে পারে না।