L'idée est de garder le canal ouvert pour l'utiliser plus tard. Dans Playframework 2.5.x La documentation indique que vous devez utiliser des flux AKKA, mais ne dit rien comment réaliser cet exemple. Quelqu'un peut m'aider?
3 Réponses :
Je pense que vous recherchez simplement comment faire une connexion WebSocket d'écho avec Play 2.5 et le flux de flux AKKA.
Ceci devrait faire le tour p>
def socket = WebSocket.accept[String, String] { request => Flow[String] .map(msg => "I received your message: " + msg) }
En fait, je sais comment faire une bande d'écho, mais ce n'est pas ce que je demande. Dans mon exemple, vous pouvez voir que vous pouvez utiliser le canal pour appuyer sur les messages et vous pouvez stocker la chaîne et l'utiliser plus tard. Supposez que vous recevez un événement et vous devez informer l'utilisateur par la chaîne
J'ai enfin trouvé une solution utilisant des acteurs. J'ai trouvé ceci: puis j'ai examiné le code source d'actorflow.actorref:
et est venu avec cette solution: p> lazy val broadcastActorRef = actorSystem.actorOf(Props[UsersBroadcastActor])
def flowsocket = WebSocket.accept[JsValue, JsValue] { request =>
ActorFlow.actorRef(out => UserActor.props(out, broadcastActorRef))
}
Vous devrez faire quelque chose comme ça! La première partie créera, étant donné un évier et un flux, les objets que vous aurez besoin de pousser les messages et de les recevoir (Abonnez-vous à l'éditeur). p> Enfin, vous allez créer un flux pour chaque demande de bande que vous recevez avec ce code Je suis désolé si je ne suis pas assez clair, utilisez ce code, cela fonctionnera. P> p> flow.fromsinkandsource code> ... quelque chose qui n'est pas clair en ce qui concerne les flux AKKA (
source code> S,
évier code> s et
flux code> s) est qu'ils représentent la forme du débit, mais pas le flux en soi ... Le flux va lorsque vous les matérialisez (avec méthode
Runwith code> ou
exécuter code>). Maintenant ... jouer reçoit soit
Source code> S (lors de l'utilisation d'événements envoyés par serveur) ou
flux code> S lorsque vous utilisez WebSockets. Et ils ne sont pas encore matérialisés ... Vous devez donc les matérialiser (la première ligne), puis créer un flux à nouveau! (la ligne WebSocketCockAck) p>
La nouvelle PLAY 2.5 WebSocket API est clairement un trainwreck
Met une surcharge syntaxique, mais une fois compris, je pense que c'est en fait assez puissant
Quelle est la question réelle?
Dupliqué possible de Framework Comment utiliser les flux AKKA Sortie sur un site Web
@Anton La question est de savoir comment refactoriser le code en utilisant AKKA Streams, l'idée est en mesure de garder le canal ouvert et de l'utiliser plus tard en réponse à un autre événement.
Je comprends mais ce serait vraiment utile si vous mettez cette explication dans la question elle-même - la seule phrase de la publication n'est pas une vraie question, mais une déclaration