PHP में WebSockets: बिना जादू के real-time एप्लिकेशन बनाना
\n\nक्या आपने कभी सोचा है कि आधुनिक वेब एप्लिकेशन में सूचनाएं तुरंत क्यों आती हैं, और चैट बिना लगातार F5 दबाए कैसे काम करती हैं? रहस्य WebSockets में है। और हाँ, PHP भी real-time में सक्षम है। इस लेख में, हम समझेंगे कि PHP को WebSockets से कैसे जोड़ा जाए, एक लाइव चैट और सूचनाएं लिखेंगे, और सबसे महत्वपूर्ण बात, यह बिना किसी परेशानी और अनावश्यक लाइब्रेरी के करेंगे।
\n\nअगर आप इस बात के आदी हैं कि PHP "अनुरोध-प्रतिक्रिया" है, तो आश्चर्यचकित होने के लिए तैयार रहें। PHP में WebSockets की मदद से, आप पूर्ण real-time एप्लिकेशन बना सकते हैं: एक साधारण चैट से लेकर मल्टीप्लेयर गेम तक। और यह सब आपकी पसंदीदा भाषा में।
\n\nWebSockets क्या है और PHP को इसकी आवश्यकता क्यों है?
\n\nWebSocket क्लाइंट और सर्वर के बीच दो-तरफा संचार का एक प्रोटोकॉल है। सामान्य HTTP के विपरीत, जहां क्लाइंट लगातार सर्वर से पूछता है "क्या कोई खबर है?", WebSocket कनेक्शन को खुला रखता है। जब डेटा उपलब्ध होता है, तो सर्वर स्वयं क्लाइंट को डेटा भेजता है।
\n\nPHP के लिए यह एक वास्तविक सफलता है। पहले, real-time केवल Node.js या asyncio के साथ Python का क्षेत्र था। लेकिन अब PHP पर real-time एप्लिकेशन एक वास्तविकता है। Ratchet और Swoole जैसी लाइब्रेरी की बदौलत, PHP एक लंबे समय तक चलने वाली प्रक्रिया के रूप में काम कर सकता है, जो हजारों समवर्ती कनेक्शनों को संभाल सकता है।
\n\nयह कहाँ उपयोगी होगा?
\n- \n
- चैट और मैसेंजर; \n
- सूचना प्रणाली (नए ऑर्डर, संदेश); \n
- दस्तावेज़ों का सहयोगात्मक संपादन; \n
- ऑनलाइन गेम और क्विज़; \n
- रीयल-टाइम में मॉनिटरिंग और डैशबोर्ड। \n
तैयारी: शुरुआत करने के लिए क्या चाहिए
\n\nPHP पर WebSocket सर्वर के साथ काम करने के लिए हमें आवश्यकता होगी:
\n- \n
- PHP 7.4 या उच्चतर (बेहतर होगा 8.x); \n
- Composer — पैकेज मैनेजर; \n
- Ratchet लाइब्रेरी (या प्रोडक्शन के लिए Swoole); \n
- OOP और कंसोल के साथ काम करने की बुनियादी समझ। \n
Composer के माध्यम से Ratchet स्थापित करें:
\ncomposer require cboden/ratchet\n\nस्थापना के बाद, आपके पास एक vendor फ़ोल्डर और composer.json फ़ाइल होगी। PHP पर पहला real-time एप्लिकेशन लिखने के लिए सब कुछ तैयार है।
\n\nPHP पर एक सरल WebSocket सर्वर लिखना
\n\nएक फ़ाइल server.php बनाएं। यह हमारा PHP WebSocket सर्वर होगा, जो कनेक्शन स्वीकार करता है और सभी जुड़े क्लाइंट को संदेश भेजता है।
<?php\nuse Ratchet\\Server\\IoServer;\nuse Ratchet\\Http\\HttpServer;\nuse Ratchet\\WebSocket\\WsServer;\nuse Ratchet\\MessageComponentInterface;\nuse Ratchet\\ConnectionInterface;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\nclass Chat implements MessageComponentInterface {\n protected $clients;\n\n public function __construct() {\n $this->clients = new \\SplObjectStorage;\n echo "सर्वर शुरू हो गया!\\n";\n }\n\n public function onOpen(ConnectionInterface $conn) {\n $this->clients->attach($conn);\n echo "नया कनेक्शन: {$conn->resourceId}\\n";\n }\n\n public function onMessage(ConnectionInterface $from, $msg) {\n foreach ($this->clients as $client) {\n if ($from !== $client) {\n $client->send($msg);\n }\n }\n echo "{$from->resourceId} से संदेश: $msg\\n";\n }\n\n public function onClose(ConnectionInterface $conn) {\n $this->clients->detach($conn);\n echo "कनेक्शन बंद हुआ: {$conn->resourceId}\\n";\n }\n\n public function onError(ConnectionInterface $conn, \\Exception $e) {\n echo "त्रुटि: {$e->getMessage()}\\n";\n $conn->close();\n }\n}\n\n$server = IoServer::factory(\n new HttpServer(\n new WsServer(\n new Chat()\n )\n ),\n 8080\n);\n\n$server->run();\n\nकंसोल से सर्वर शुरू करें:
\nphp server.php\n\nबस! सर्वर पोर्ट 8080 पर सुन रहा है और WebSocket कनेक्शन स्वीकार करने के लिए तैयार है। अब