Ich muss einige komplizierte Berechnungen zwischen dem Senden von Nachrichten, aber die erste Nachricht wird mit Sekunden nach dem Kompilieren gesendet. Wie kann ich es sofort versenden?Ratsche WebSocket - Nachricht sofort senden
<?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;
}
}
Start Server:
$server = IoServer::factory(
new HttpServer(
new WsServer(
$ws_manager
)
), $port
);
Sie könnten eine Ereignisschleife verwenden, die jede Millisekunde ausgeführt wird, und Ihre eigene Warteschlange von Nachrichten zu senden. – MarshallOfSound
Es ist eine nette Idee, aber ich denke, es ist keine optimale Lösung (viele Iterationen, die nichts tun). Leider kenne ich keinen besseren Weg. – Redkrytos
Ja, es war irgendwie ein letzter Ausweg Vorschlag Art der Sache. Kurz, einige der Kernteile von Ratchet zu übersteuern. Ich nehme an, du könntest mit Symphony einen neuen Prozess starten, um die Computer-Sachen zu machen? – MarshallOfSound