PHP के लिए WebSocket लाइब्रेरी Ratchet: रियल टाइम एप्लिकेशन बनाना
WebSocket एक प्रोटोकॉल है जो क्लाइंट और सर्वर के बीच एक स्थायी कनेक्शन के माध्यम से द्विदिश संचार प्रदान करता है। पारंपरिक HTTP के विपरीत, जहां प्रत्येक अनुरोध एक नया कनेक्शन खोलता है, WebSocket बिना देरी के रियल टाइम में डेटा स्थानांतरित करने की अनुमति देता है। PHP के लिए WebSocket के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी में से एक Ratchet है। यह लाइब्रेरी ReactPHP पर आधारित है और WebSocket सर्वर बनाने के लिए एक सरल और शक्तिशाली API प्रदान करती है।
Ratchet क्या है?
Ratchet एक ओपन-सोर्स PHP लाइब्रेरी है जो डेवलपर्स को चैट, नोटिफिकेशन, ऑनलाइन गेम और मॉनिटरिंग सिस्टम जैसे रियल टाइम एप्लिकेशन बनाने की अनुमति देती है। यह सॉकेट और एसिंक्रोनस इनपुट-आउटपुट के साथ काम करने की जटिलता को सारगर्भित करती है, सुविधाजनक क्लास और इंटरफेस प्रदान करती है।
Ratchet की मुख्य क्षमताएं:
- RFC 6455 विनिर्देश के अनुसार WebSocket का समर्थन
- HTTP सर्वरों के साथ एकीकरण (उदाहरण के लिए, ReactPHP के माध्यम से)
- अपने स्वयं के संदेश हैंडलर बनाने की क्षमता
- Pub/Sub के लिए WAMP (WebSocket Application Messaging Protocol) का समर्थन
- हल्का और उच्च प्रदर्शन
Ratchet की स्थापना
लाइब्रेरी की स्थापना Composer के माध्यम से की जाती है। टर्मिनल में निष्पादित करें:
composer require cboden/ratchetस्थापना के बाद, आपके प्रोजेक्ट में ReactPHP सहित आवश्यक निर्भरताओं के साथ एक vendor फ़ोल्डर दिखाई देगा।
एक सरल WebSocket सर्वर बनाना
एक बुनियादी उदाहरण पर विचार करें: हम एक सर्वर बनाएंगे जो कनेक्शन स्वीकार करता है और वापस एक स्वागत संदेश भेजता है। इसके लिए server.php फ़ाइल बनाएं:
<?phprequire 'vendor/autoload.php';
use Ratchet\\MessageComponentInterface;use Ratchet\\ConnectionInterface;use Ratchet\\Server\\IoServer;use Ratchet\\Http\\HttpServer;use Ratchet\\WebSocket\\WsServer;
class MyWebSocket implements MessageComponentInterface { protected $clients;
public function __construct() { $this->clients = new \\SplObjectStorage; }
public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "नया कनेक्शन: {$conn->resourceId}"; $conn->send("आपका स्वागत है! आपका ID: {$conn->resourceId}"); }
public function onMessage(ConnectionInterface $from, $msg) { echo "{$from->resourceId} से संदेश प्राप्त हुआ: {$msg}"; // सभी क्लाइंट को भेजें foreach ($this->clients as $client) { if ($from !== $client) { $client->send("{$from->resourceId} से संदेश: {$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(); }}
$server = IoServer::factory( new HttpServer( new WsServer( new MyWebSocket() ) ), 8080);
echo "WebSocket सर्वर पोर्ट 8080 पर शुरू हुआ...";$server->run();सर्वर को कमांड से चलाएं:
php server.phpअब सर्वर पोर्ट 8080 पर सुन रहा है। परीक्षण के लिए किसी भी WebSocket क्लाइंट का उपयोग किया जा सकता है, जैसे ब्राउज़र एक्सटेंशन या सरल JavaScript कोड।
JavaScript पर क्लाइंट भाग
एक HTML फ़ाइल client.html बनाएं:
<!DOCTYPE html><html><head> <title>WebSocket क्लाइंट</title></head><body> <input type="text" id="message" placeholder="संदेश दर्ज करें"> <button onclick="sendMessage()">भेजें</button> <div id="output"></div>
<script> var conn = new WebSocket('ws://localhost:8080'); conn.onopen = function(e) { console.log("कनेक्शन स्थापित हुआ!"); }; conn.onmessage = function(e) { var output = document.getElementById('output'); output.innerHTML += '<p>' + e.data + '</p>'; };
function sendMessage() { var msg = document.getElementById('message').value; conn.send(msg); } </script></body></html>ब्राउज़र में client.html खोलें। आप संदेश भेज सकते हैं और सर्वर से प्रतिक्रिया प्राप्त कर सकते हैं।
निष्कर्ष
Ratchet PHP में रियल टाइम एप्लिकेशन बनाने के लिए एक शक्तिशाली उपकरण है। इस लेख में, हमने बुनियादी बातों को कवर किया: स्थापना, एक सरल सर्वर बनाना, और क्लाइंट के साथ बातचीत। अधिक जटिल परियोजनाओं के लिए, आप WAMP प्रोटोकॉल, कस्टम इवेंट हैंडलर और अन्य सुविधाओं का उपयोग कर सकते हैं।