Pracuję w czasie rzeczywistym Symfony aplikacja za pomocą Ratchet bibliotekę, w tej aplikacji trzeba wysłać jakieś dane do konkretnego użytkownika więc rozwiązanie logika było użyć SessionProvider że dołączy obiekt Symfony2 Session do każdego przychodzącego obiektu połączenia. Ponieważ w dokumentacji podano, że mam skonfigurowany nienatywny moduł obsługi sesji do przechowywania moich sesji, tj. W bazie danych za pośrednictwem PDO. i to działa dobrze na chwilę, ale muszę uzyskać obiekt Connection określonego użytkownika, aby wysłać mu trochę danych, więc w inny sposób muszę znaleźć obiekt połączenia, który odwołuje się do tego użytkownika i nie mogę znaleźć sposobu na Zrób to ? ją moja kod serwera:jak uzyskać obiekt połączenia określonego użytkownika?
$app=new AggregateApplication();
$loop = \React\EventLoop\Factory::create();
$context = new \React\ZMQ\Context($loop);
$pull = $context->getSocket(\ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5555');
$pull->on('message', array($app, 'onNotification'));
$webSock = new \React\Socket\Server($loop);
$webSock->listen(8080, '127.0.0.1');
$handler = $this->getContainer()->get('session.handler');
$server=new \Ratchet\Wamp\WampServer($app);
$server = new SessionProvider($server, $handler);
$webServer = new \Ratchet\Server\IoServer(new \Ratchet\WebSocket\WsServer($server),$webSock);
$loop->run();
Ale jak wysłać wiadomość do konkretnego użytkownika? Jak zaimplementować to w przykładzie 2 klientów podłączonych do jednego serwera WebSocket, każdy z własnym obiektem połączenia: $ ConnSender, $ ConnReceiver? Proszę wyjaśnić mi, że nie znajduję żadnej odpowiedzi na ten znacznik z grzechotką SO.thanks –
za każdym razem, gdy użytkownik jest podłączony do serwera Websocket, otrzymuję jego id i przechowuję jego obiekt połączenia w tablicy indeksowanej jego identyfikatorem , więc gdy chcę przesłać dane do tego klienta, otrzymuję jego obiekt połączenia za pomocą jego identyfikatora i używam go do wysyłania moich danych. –
Rozumiem, co masz na myśli, ale proszę pozwolić mi dodać inne pytanie, ponieważ nie jest dla mnie jasne. Kiedy będę mieć tablicę zawierającą dwa obiekty połączenia z dwoma różnymi identyfikatorami (Id1 nadawcy i Id2 odbiornika), w jaki sposób serwer WebSocket otrzyma Id2, aby wysłać mu wiadomość? '$ client = $ this-> clients [$ Id2]; $ client-> send (" Message ");' –