WebSocket on PHP: शुरुआत से real-time एप्लिकेशन बनाना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

WebSocket on PHP: शुरुआत से real-time एप्लिकेशन बनाना



आधुनिक वेब एप्लिकेशन को उपयोगकर्ताओं के कार्यों पर तत्काल प्रतिक्रिया की आवश्यकता होती है। मानक HTTP प्रोटोकॉल, जो "अनुरोध-प्रतिक्रिया" सिद्धांत पर काम करता है, उन कार्यों के लिए उपयुक्त नहीं है जहां डेटा को वास्तविक समय में अपडेट किया जाना चाहिए — चैट, सूचनाएं, शेयर बाजार के कोटेशन या ऑनलाइन गेम। इस समस्या का समाधान है WebSocket। इस लेख में, हम PHP पर WebSocket को लागू करने का तरीका समझेंगे, एक सरल चैट बनाएंगे और सर्वोत्तम प्रथाओं पर विचार करेंगे।



WebSocket क्या है और PHP में इसकी आवश्यकता क्यों है?



WebSocket एक संचार प्रोटोकॉल है जो क्लाइंट (ब्राउज़र) और सर्वर के बीच स्थायी द्विदिश कनेक्शन प्रदान करता है। HTTP के विपरीत, कनेक्शन स्थापित होने के बाद, डेटा बिना बार-बार अनुरोध किए किसी भी समय दोनों दिशाओं में प्रेषित किया जा सकता है। यह real-time एप्लिकेशन के लिए महत्वपूर्ण है।



PHP को पारंपरिक रूप से "प्रारंभ-निष्पादन-समाप्ति" योजना पर काम करने वाली सर्वर-साइड भाषा माना जाता है। हालांकि, Ratchet और ReactPHP जैसी एसिंक्रोनस लाइब्रेरी के आगमन के साथ, PHP WebSocket सर्वर बनाने के लिए एक पूर्ण उपकरण बन गया है। PHP पर WebSocket का उपयोग करने के मुख्य लाभ:



  • डेटा की तत्काल डिलीवरी — बार-बार HTTP अनुरोधों में देरी के बिना।
  • सर्वर पर लोड में कमी — एक कनेक्शन दर्जनों Long Polling अनुरोधों को बदल देता है।
  • एकीकरण में सरलता — यदि आपका प्रोजेक्ट पहले से PHP पर है, तो तकनीकी स्टैक बदलने की आवश्यकता नहीं है।


Ratchet लाइब्रेरी की स्थापना और कॉन्फ़िगरेशन



PHP में WebSocket के साथ काम करने के लिए हम Ratchet लाइब्रेरी (ReactPHP के साथ संयोजन में) का उपयोग करेंगे। स्थापना Composer के माध्यम से की जाती है:



composer require cboden/ratchet


स्थापना के बाद, हम एक बुनियादी WebSocket सर्वर क्लास बनाएंगे। Ratchet में, सर्वर को MessageComponentInterface इंटरफ़ेस के माध्यम से कार्यान्वित किया जाता है, जिसमें चार विधियाँ हैं:



  • onOpen — नए क्लाइंट के कनेक्ट होने पर कॉल किया जाता है।
  • onMessage — आने वाले संदेश को संसाधित करता है।
  • onClose — क्लाइंट के डिस्कनेक्ट होने पर ट्रिगर होता है।
  • onError — कनेक्शन त्रुटियों को संभालता है।


सबसे सरल सर्वर का उदाहरण:



<?phpuse Ratchet\\MessageComponentInterface;use Ratchet\\ConnectionInterface;

class ChatServer implements MessageComponentInterface { protected $clients;

public function __construct() { $this->clients = new \\SplObjectStorage; }

public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "नया कनेक्शन: {$conn->resourceId}"; }

public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($from !== $client) { $client->send($msg); } } }

public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "कनेक्शन {$conn->resourceId} बंद हुआ"; }

public function onError(ConnectionInterface $conn, \\Exception $e) { echo "त्रुटि: {$e->getMessage()}"; $conn->close(); }}


WebSocket सर्वर चलाना और क्लाइंट भाग



सर्वर चलाने के लिए, हम एक स्क्रिप्ट server.php बनाएंगे:



<?phprequire __DIR__ . '/vendor/autoload.php';

use Ratchet\\Server\\IoServer;use Ratchet\\Http\\HttpServer;use Ratchet\\WebSocket\\WsServer;

$server = IoServer::factory( new HttpServer( new WsServer( new ChatServer() ) ), 8080);

echo "WebSocket सर्वर पोर्ट 8080 पर चालू हुआ";$server->run();


सर्वर को इस कमांड से चलाएं:



php server.php

ब्लॉग

पुस्तक अनुशंसाएँ