wie man das connection-Objekt für einen bestimmten Benutzer?

Arbeite ich in einer real-time - Symfony - app mit Ratsche Bibliothek, in dieser app brauche ich, um Daten zu senden zu einem bestimmten Benutzer, so die Logik, die Lösung war die Verwendung der SessionProvider, das wird befestigen, Symfony2 Session-Objekt für jede eingehende Verbindung-Objekt.
Wie die Dokumentation besagt, ich habe setup eine nicht-native session-handler zu speichern, meine Sitzungen, d.h. in einer Datenbank via PDO.
und dass die Arbeit gut für den moment, aber ich brauche, um das Connection-Objekt für einen bestimmten Benutzer zu senden, ihm einige Daten, die so in anderen Weg, ich muss die connection-Objekt, das eine Referenz zu diesem user und ich kann nicht einen Weg finden, es zu tun ?
Sie ist mein server code :

    $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();
  • Aber wie das senden einer Nachricht an einen bestimmten Benutzer? Wie implementieren Sie diese in dem Beispiel von 2-clients eine Verbindung mit einem WebSocket-server, jeder mit seiner eigenen connection-Objekt :$ConnSender,$ConnReceiver? Bitte klären Sie mich ich nicht finden, eine Antwort auf diese auf ratchet tag SO.Dank
  • jedes mal, wenn ein Benutzer verbunden ist, um den websocket-server bekomme ich seine Id und ich seine speichern connection-Objekt in ein array, indiziert mit seiner Id, so dass, wenn ich will zu senden einige Daten auf dem client bekomme ich nur seine connection-Objekt über seine Id und ich schicke meine Daten.
  • Ich verstehe, was du meinst, aber bitte lassen Sie mich hinzufügen, eine andere Frage, denn es ist nicht klar für mich. Wenn ich mein array mit zwei connection-Objekte mit zwei verschiedenen IDs (Id1 von sender-und Id2-Empfänger), wie wird der WebSocket-server bekommen, Id2, ihn zu senden der Nachricht? $client = $this->clients[$Id2];$client->send("Message");
  • Durch die Verwendung von symfony, können Sie die Kommunikation zwischen Ihnen wieder symfony-app und der websocket-server mit ZMQ also, wenn Sie wan ' T senden einer Nachricht an client client1 $context = new ZMQContext(); $socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'myPusher'); $socket->connect("tcp://localhost:5555"); $entryData="{'id':'1','Daten':'einige Daten zu senden'}" $socket->senden(Funktionen json_encode($entryData));
  • Danke Anas. Und ich bin sehr Leid für die Umsetzung mehr newbie-Fragen hier. Wenn ich Sie gut verstehe, sollte ich auch die Karte user_id zu resourceId irgendwo (vielleicht in einer db-Tabelle). bin ich im Recht? die Indizierung der Arrays mit ResourceId ist nicht genug. Ich möchte in der Lage sein, um eine Nachricht zu senden Id2, ohne mit ZeroQM (da ich keine Interaktion mit den App-Skript, das ich verwenden werden entity-manager-Dienst in meinem Chat Klasse zu bestehen-Nachrichten). Sollte ich unbedingt vorbei stackoverflow.com/questions/17558657/...?
  • Definitiv es ist nicht nötig, aber was es empfohlen wird, alle Daten, die Sie senden, vom client zum server gemacht werden müssen, die mit ajax in einer http-Anforderung, die Sie verwenden sollten ZMQ zu sagen webSocketServer zu senden, die gleichen Daten auf einem anderen client mit webSockets, weil es eine Frage der Sicherheit, wenn Sie Händel-Daten in Sie re websocket-server. und auch wenn du den thread in dem link, den Sie weitergeben, indem Sie die re app-code in den thread
  • Aaah! vielen Dank für diese Zusatzinformationen. Ich sehe jetzt. Vom client zum server, ich schicke AJAX-call mit sender_id, receiver_id und message. Mit ZeroQM, schicke ich das ganze Zeug zum Websocket-server. dann in meinem Chat der Klasse, rufe ich die Verbindung von receiver_id aus clients array und senden Sie ihm die Nachricht.
  • Genau das war meine Lösung.
  • ich danke Ihnen sehr, sir, für Ihre Erfahrungen, gerade in diesem Teil des PHP-Programmierung, die wirklich fehlt, einfache und klare doc ( in der Betrachtung der newbs).
  • Anas, bitte ich umgesetzt, 90 Prozent von dem, was wir diskutiert haben, ich brauche nur Ihre Hilfe für den verbleibenden Teil stackoverflow.com/questions/29576033/.... nochmals vielen Dank
  • Ich habe geschrieben, eine Antwort hoffe, die helfen.

Schreibe einen Kommentar