tôi phải làm một số tính toán phức tạp giữa gửi tin nhắn, nhưng thông điệp đầu tiên được gửi đi với thứ hai sau compulting. Làm thế nào tôi có thể gửi nó ngay lập tức?Ratchet WebSocket - gửi tin nhắn ngay lập tức
<?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;
}
}
Bắt đầu từ server:
$server = IoServer::factory(
new HttpServer(
new WsServer(
$ws_manager
)
), $port
);
Bạn có thể sử dụng EventLoop chạy mỗi mili giây và hàng đợi thư của riêng bạn để gửi. – MarshallOfSound
Đó là ý tưởng hay, nhưng tôi nghĩ đó không phải là giải pháp tối ưu (nhiều lần lặp lại, không làm gì cả). Thật không may tôi không biết cách nào tốt hơn. – Redkrytos
Vâng, đó là một loại gợi ý cuối cùng của loại điều. Ngắn của overiding một số phần cốt lõi của Ratchet. Tôi cho rằng bạn có thể sử dụng bản giao hưởng để khởi chạy một quy trình mới để thực hiện các công cụ tính toán? – MarshallOfSound