बेसिक प्रोसेस

(एक साधारण 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 पोर्ट पर टेक्स्ट प्रोटोकॉल का वर्कर बनाएं
$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 आदेश का उपयोग कर सकते हैं

telnet 127.0.0.1 2347