J'ai commencé à jouer autour de scala et je suis arrivé à cette page d'accueil en particulier de la chatroom de socket web en scala.Scala & Play Websockets: Stockage des messages échangés
Ils utilisent MessageHub.source()
et BroadcastHub.sink()
comme Source et Sink pour envoyer les messages à tous les clients connectés.
L'exemple fonctionne correctement pour échanger des messages tels quels. Je souhaite stocker les messages échangés dans le salon de discussion dans un DB.
J'ai essayé d'ajouter des fonctions map et fold à la source et à la mémoire pour récupérer les messages envoyés mais je n'ai pas pu.
J'ai essayé d'ajouter une étape d'écoulement entre MergeHub et BroadcastHub comme ci-dessous
val flow = Flow[WSMessage].map(element => println(s"Message: $element"))
source.via(flow).toMat(sink)(Keep.both).run()
Mais il génère une erreur de compilation qui ne peut pas faire référence à toMat avec une telle signature. Est-ce que quelqu'un peut m'aider ou me signaler comment puis-je obtenir des messages qui sont envoyés et les stocker dans la base de données.?
Lien pour le modèle complet:
https://github.com/playframework/play-scala-chatroom-example
S'il vous plaît ajouter un code (prototype) pour montrer comment vous avez essayé d'ajouter une étape de flux. Montre également la définition de l'étape de flux en prenant soin d'enregistrer les données dans la base de données. –
@FredericA. Ajouté le code où j'ai essayé d'ajouter l'étape de flux. Je peux me tromper comme je suis nouveau à ceci. – practice2perfect
Avez-vous vraiment utilisé ce code pour le flux? Il est clairement faux et expliquerait l'erreur de compilation –