Die Idee ist, den Kanal geöffnet zu lassen, um ihn später zu verwenden. In playframework 2.5.x heißt es in der Dokumentation, dass man akka-Streams verwenden muss, sagt aber nichts darüber, wie man dieses Beispiel erreicht. Jemand kann mir helfen?
%Vor%Sie müssen so etwas tun!
%Vor%Der erste Teil erstellt, bei einer Senke und einem Fluss, die Objekte, die Sie zum Senden und Empfangen von Nachrichten benötigen (abonnieren Sie den Publisher).
Schließlich erstellen Sie einen Flow für jede Websocket-Anfrage, die Sie mit dem Code Flow.fromSinkAndSource
... erhalten. Was nicht klar ist bezüglich Akka Streams ( Source
s, Sink
s und Flow
s) ist das Sie stellen die Form des Flusses dar, aber nicht den Fluss an sich ... der Fluss wird ausgeführt, wenn Sie materialisiert werden (mit der Methode runWith
oder run
). Now ... Play empfängt entweder Source
s (bei Verwendung von Server Sent Events) oder Flow
s bei Verwendung von WebSockets. Und sie sind noch nicht materialisiert ... also musst du sie materialisieren (die erste Zeile) und dann einen Flow AGAIN erstellen! (die websocketAction-Zeile)
Es tut mir leid, wenn ich nicht klar genug bin, aber benutze diesen Code, es wird funktionieren.
Ich habe endlich eine Lösung mit den Actors gefunden. Ich habe das gefunden:
%Vor%Dann habe ich den Quelltext von ActorFlow.actorRef angeschaut: Ссылка
und kam auf diese Lösung:
%Vor%Ich habe meine Lösung überarbeitet, um das Actor-Modell besser zu nutzen. Ich habe jetzt einen "UsersBroadcastActor", der ein Singleton-Akteur ist, mit dem sich alle anderen "UserActors" verbinden und über ihn kommunizieren können:
%Vor%Wenn UserActor instanziiert wird, sendet es in seiner preStart () - Methode eine Subskriptionsnachricht an den broadcastActorRef, der die Verweise auf alle UserActors speichert, die ihn "abonnieren". Ich kann senden senden Sie eine Nachricht an BroadcastActorRef, und es leitet es an jeden UserActors weiter. Lassen Sie mich wissen, ob Sie auch ein vollständiges Codebeispiel für diese Lösung wünschen.
Ich denke, Sie suchen nur nach einer Echo-Websocket-Verbindung mit Play 2.5 und dem Akka-Stream.
Das sollte den Trick machen
%Vor%Tags und Links akka playframework playframework-2.5