भेजें
विवरण:
mixed Connection::send(mixed $data [,$raw = false])
क्लाइंट को डेटा भेजें
पैरामीटर
$data
भेजा जाने वाला डेटा; यदि Worker वर्ग को प्रारंभ करते समय प्रोटोकॉल निर्दिष्ट किया गया है, तो स्वचालित रूप से प्रोटोकॉल के encode फ़ंक्शन को कॉल किया जाएगा, प्रोटोकॉल पैकिंग कार्य पूरा होने के बाद क्लाइंट को भेजा जाएगा
$raw
क्या कच्चा डेटा भेजना है, यानी प्रोटोकॉल के encode फ़ंक्शन को कॉल नहीं करना है; डिफ़ॉल्ट रूप से false है, यानी प्रोटोकॉल के encode फ़ंक्शन को स्वचालित रूप से कॉल किया जाएगा
वापस करने का मान
true का मतलब है कि डेटा सफलतापूर्वक इस कनेक्शन के ऑपरेटिंग सिस्टम स्तर के सॉकेट भेजने के बफर में लिखा गया है
null का मतलब है कि डेटा इस कनेक्शन के एप्लिकेशन स्तर के भेजने के बफर में लिखा गया है, सिस्टम स्तर के सॉकेट भेजने के बफर में लेखन के लिए प्रतीक्षा कर रहा है
false का मतलब है कि भेजने में विफलता हुई, विफलता का कारण हो सकता है कि क्लाइंट का कनेक्शन बंद हो गया है, या इस कनेक्शन के एप्लिकेशन स्तर का भेजने का बफर भर गया है
ध्यान दें
send द्वारा लौटाया गया true केवल यह दर्शाता है कि डेटा सफलतापूर्वक इस कनेक्शन के ऑपरेटिंग सिस्टम के सॉकेट भेजने के बफर में लिखा गया है, इसका मतलब यह नहीं है कि डेटा सफलतापूर्वक विपरीत सॉकेट के रिसीव बफर में भेजा गया है, और न ही इसका मतलब यह है कि विपरीत एप्लिकेशन ने स्थानीय सॉकेट रिसीव बफर से डेटा पढ़ लिया है। हालांकि, अगर send false नहीं लौटाता है और नेटवर्क टूटता नहीं है और क्लाइंट सामान्य रूप से प्राप्त करता है, तो डेटा को मूल रूप से 100% माना जा सकता है कि यह दूसरे पक्ष को भेजा जा सकता है।
चूंकि सॉकेट भेजने के बफर का डेटा ऑपरेटिंग सिस्टम द्वारा दूसरे पक्ष को असिंक्रोनस रूप से भेजा जाता है, ऑपरेटिंग सिस्टम ने एप्लिकेशन स्तर को संबंधित पुष्टि तंत्र नहीं दिया है, इसलिए एप्लिकेशन स्तर यह नहीं जान सकता कि कब सॉकेट भेजने के बफर का डेटा भेजना शुरू हुआ, और एप्लिकेशन स्तर यह नहीं जान सकता कि सॉकेट भेजने के बफर का डेटा सफलतापूर्वक भेजा गया है या नहीं। उपरोक्त कारणों के आधार पर, workerman सीधे संदेश पुष्टि इंटरफ़ेस प्रदान नहीं कर सकता है।
यदि व्यवसाय को यह सुनिश्चित करना है कि प्रत्येक संदेश क्लाइंट द्वारा प्राप्त किया गया है, तो व्यवसाय में एक पुष्टि तंत्र को जोड़ा जा सकता है। पुष्टि तंत्र विभिन्न व्यवसायों के आधार पर भिन्न हो सकता है, भले ही समान व्यवसायों की पुष्टि तंत्र भी कई तरीकों से हो सकती है।
उदाहरण के लिए, चैट प्रणाली इस प्रकार के पुष्टि तंत्र का उपयोग कर सकती है। प्रत्येक संदेश को डेटाबेस में स्टोर करें, प्रत्येक संदेश में एक पढ़ा गया या नहीं का फ़ील्ड होता है। क्लाइंट प्रत्येक संदेश प्राप्त करने पर सर्वर को एक पुष्टि पैकेज भेजता है, सर्वर संबंधित संदेश को पढ़ा हुआ बना देता है। जब क्लाइंट सर्वर से कनेक्ट होता है (आमतौर पर उपयोगकर्ता लॉगिन या डिस्कनेक्ट री-कनेक्ट के समय), डेटाबेस में जांचें कि क्या कोई अपढ़ संदेश है, यदि हां, तो उसे क्लाइंट को भेजें; इसी तरह, क्लाइंट संदेश प्राप्त करने के बाद सर्वर को सूचित करता है कि यह पढ़ा गया है। इस प्रकार यह सुनिश्चित हो सकता है कि प्रत्येक संदेश दूसरे पक्ष को प्राप्त होगा। निश्चित रूप से, डेवलपर्स अपनी स्वयं की पुष्टि तर्क का उपयोग कर सकते हैं।
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onMessage = function(TcpConnection $connection, $data)
{
// स्वचालित रूप से \Workerman\Protocols\Websocket::encode को कॉल करेगा और इसे websocket प्रोटोकॉल डेटा में पैक करने के बाद भेज देगा
$connection->send("hello\n");
};
// वर्कर चलाना
Worker::runAll();