मुझे संदेश भेजने के बीच कुछ जटिल कंप्यूटिंग करना है, लेकिन पहले संदेश को कंप्यूटिंग के बाद दूसरे के साथ भेजा जाता है। मैं इसे तुरंत कैसे भेज सकता हूं?रैचेट वेबसॉकेट - तुरंत संदेश भेजें
<?php
namespace AppBundle\WSServer;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class CommandManager implements MessageComponentInterface {
public function onOpen(ConnectionInterface $conn) {
//...
}
public function onClose(ConnectionInterface $connection) {
//...
}
public function onMessage(ConnectionInterface $connection, $msg) {
//...
$connection->send('{"command":"someString","data":"data"}');
//...complicated compulting
sleep(10);
//send result
$connection->send('{"command":"someString","data":"data"}');
return;
}
}
शुरू सर्वर:
$server = IoServer::factory(
new HttpServer(
new WsServer(
$ws_manager
)
), $port
);
आप एक EventLoop है कि हर मिलीसेकंड चलाता है, और संदेशों के अपने खुद के कतार इस्तेमाल कर सकते हैं भेजने के लिए। – MarshallOfSound
यह अच्छा विचार है, लेकिन मुझे लगता है कि यह इष्टतम समाधान नहीं है (बहुत सारे पुनरावृत्तियों, जो कुछ भी नहीं करते हैं)। दुर्भाग्य से मुझे कोई बेहतर तरीका नहीं पता है। – Redkrytos
हाँ, यह एक अंतिम उपाय सुझाव प्रकार की तरह था। रत्शेट के कुछ प्रमुख हिस्सों को पार करने के लिए छोटा। मुझे लगता है कि आप कंप्यूटिंग सामान करने के लिए एक नई प्रक्रिया शुरू करने के लिए सिम्फनी का उपयोग कर सकते हैं? – MarshallOfSound