Ich versuche, meinen WebSocket Controller-Code auf Play 2.5 zu migrieren und habe die Anweisungen unter ScalaWebSockets befolgt. Ich erhalte Compilerfehler für meine Routenkonfigurationen. Mein WebSocket-Controller-Code ist wie folgtPlay Framework 2.5, Routen zum Web-Socket können nicht kompiliert werden
package controllers
import akka.actor.ActorSystem
import akka.stream.Materializer
import com.google.inject.Inject
import utils.silhouette.{AuthenticationController, AuthenticationEnvironment}
// This is needed to implicitly provide the Scala ActorSystem
import play.api.libs.concurrent.Execution.Implicits._
import play.api.mvc._
import play.api.libs.streams._
import scala.concurrent.Future
abstract class IntegrationMonitorProvider @Inject() (implicit system: ActorSystem,
materializer: Materializer)
extends AuthenticationController{
def monitor = WebSocket.acceptOrResult[String, String] { request =>
implicit val req = Request(request, AnyContentAsEmpty)
SecuredRequestHandler { securedRequest =>
Future.successful(HandlerResult(Ok, Some(securedRequest.identity)))
}.map {
case HandlerResult(r, Some(user)) =>
Right(ActorFlow.actorRef(IntegrationMonitor.props(req.session.get("integration").get.toLong) _))
case HandlerResult(r, None) => Left(r)
}
}
}
Die einzelnen Controller beabsichtigen WebSocket unterstützen soll dies verlängern. Dieses Muster funktionierte gut mit Play 2.4, und dieser Controller-Code kompiliert auch. Aber mein Fräser Config mit folgenden Fehlern fehlschlägt
Routen kompilieren: 56: für die Methode nicht genug Argumente gelten: (Anfrage: play.api.mvc.RequestHeader) scala.concurrent.Future [Entweder [play. api.mvc.Result, akka.stream.scaladsl.Flow [play.api.http.websocket.Message, play.api.http.websocket.Message, _]]] in der WebSocket-Eigenschaft. Nicht spezifizierte Wertparameteranforderung.
Read from stdout:
GET /sample/monitor controllers.sample.Connection.monitor()
Die Steuerung, die die IntegrationMonitorProvider erweitert ist, wie unten
package controllers.sample
import javax.inject.Inject
import akka.actor.ActorSystem
import akka.stream.Materializer
import controllers.{IntegrationMonitor, IntegrationMonitorProvider}
import modules.oauth.{Credential, Metadata, TokenReader}
import play.Logger
import play.api.i18n.MessagesApi
import play.api.libs.json.JsResult
import play.api.mvc.{AnyContent, BodyParsers}
import utils.silhouette.{AuthenticationController, AuthenticationEnvironment}
// This is needed to implicitly provide the Scala ActorSystem
import play.api.libs.concurrent.Execution.Implicits._
import scala.concurrent.Future
class Connection @Inject()(val env: AuthenticationEnvironment, val messagesApi: MessagesApi)
(implicit system: ActorSystem,
materializer: Materializer)
extends IntegrationMonitorProvider with UrlCreator with DataReader {...
Schätzen Hilfe mit der.
hatte zog ich weg von Websockets diese behoben. Werde deinen Vorschlag versuchen und zurückkommen. Vielen Dank. – JerryK