Ich arbeite in einer Symfony 2-Anwendung und muss Websocket verwenden.
Ich habe ein Paket mit dem Namen GeniusesOfSymfony / WebSocketBundle gefunden und integriere es in das System. Dieses Paket basiert auf JDare / ClankBundle, aber die Firth hat das TopicPeriodicTimerInterface, um die Informationen für den Client zu jeder definierten Zeit erneut zu senden.
Ich habe es in meiner Anwendung, aber ich muss den angemeldeten Benutzer holen. Das Paket hat einen Dienst namens @ gos_web_socket.websocket.client_manipulator, um die Benutzerinformationen zu manipulieren, aber wenn ich versuche, Benutzerinformationen zu erhalten, erhält nur der Dienst den anonymen Benutzer, aber ich bin für einen Benutzer angemeldet.
Irgendjemand hatte das gleiche Problem oder kennt eine Lösung dafür ???
Ich lade Sie ein, das Verfahren für die Sitzungsfreigabe und Benutzerauthentifizierung zu befolgen, wie im Dokument des von Ihnen verwendeten Bundles erläutert: Ссылка
Zuerst müssen Sie einen Symfony-Session-Handler implementieren. Wenn Sie sich für den PDO-Session-Handler entscheiden, finden Sie das Dokument hier: Ссылка (Vergessen Sie nicht, die entsprechende Datenbank zu erstellen, wenn Sie dies gewählt haben, indem Sie alle Dienste, Parameter usw. deklarieren.)
Als nächstes müssen Sie Ihre config.yml so einstellen, dass sie Ihren Session-Handler verwendet:
%Vor%Richten Sie GOS WebSocket für die Verwendung ein:
%Vor%Das Ende der Dokumentation, die unter dem ersten Link verfügbar ist, zeigt Ihnen einige Möglichkeiten, Ihren Clientmanipulator zu verwenden. Ich weiß, es ist besser, Paste zu kopieren, aber ich habe wirklich nicht das Gefühl, kopieren das Einfügen des gesamten Dokuments ist nützlich, noch klar.
Für meinen eigenen Gebrauch habe ich keinen Client-Manipulator, ich benutze einfach
%Vor%, um den Benutzer mit der aktuellen Verbindung abzurufen. Das clientStorage
ist verfügbar, wenn Sie es dem Dienstkonstruktor als Argument übergeben ( @gos_web_socket.client_storage
). Natürlich müssen Sie Ihren Konstruktor anpassen:
Um auf andere Benutzer zuzugreifen, können Sie sich etwas inspirieren lassen von:
%Vor%Hoffe, das hilft, ich habe nicht so viel Erfahrung damit, da es auch meine erste Verwendung ist. Ich lade dich ein, direkt auf dem GitHub zu fragen, ob du noch feststeckst (Problemteil), da der Autor dir wahrscheinlich mehr helfen kann!
(Ich habe auch angenommen, dass Sie das Thema verwenden)
Ich hatte eine ähnliche Situation und habe den eingeloggten Benutzer bekommen. Wenn Sie alle Konfigurationsschritte befolgen, versuchen Sie nun, auf die IP Ihrer Anwendung zuzugreifen (127.0.0.1) zB: Ссылка Ich habe früher mit meinem Domainnamen ( Ссылка ) zugegriffen und ich habe den angemeldeten Benutzer in GeniusesOfSymfony / WebSocketBundle nicht bekommen.
Mein Code:
%Vor%Vergessen Sie nicht, dem Service ein neues Argument hinzuzufügen
%Vor%Dies kann ein Anfang für Ihre Lösung sein.