2016-10-03 47 views
16

Play 2.5.x'e geçmeden önce sık sık WebSocket.acceptWithActor kullandım. Artık web girişlerimi farklı giriş ve çıkışlar kullanırken açık kalmak için alamıyorum, benim durumumda, giriş String, çıktı JsValue.OynaWithActor [String, JsValue] için Play 2.5.x eşdeğeri nedir?

Çal 2.5.x önce Alıcım:

object Application extends Controller { 
    def myWebSocket = WebSocket.acceptWithActor[String, JsValue] { request => 
     out => MyActor.props(out) 
} 

Çal 2.5.x My alıcı: my aktör preStart yılında

@Singleton 
class Application @Inject() (implicit system: ActorSystem, materializer: Materializer) extends Controller { 
    implicit val messageFlowTransformer = 
        MessageFlowTransformer.jsonMessageFlowTransformer[String, JsValue] 
    def myWebSocket = WebSocket.accept[String, JsValue] { request => 
    ActorFlow.actorRef(out => MyActor.props(out)) 
    } 
} 

hemen postStop ardından, bu yüzden denir edilir

bu açıkça yanlıştır ancak belgelerde herhangi bir çözüm bulamıyorum ( https://www.playframework.com/documentation/2.5.x/ScalaWebSockets). WebSocket.accept[String, String] kullanırsam yuva açık kalır.

Neyi yanlış yapıyorum? Bununla

ActorFlow.actorRef[String, JsValue](out => 
     MyActor.props(
     out, 
     ... 
    ) 
    ).map(_.toString) 

özel bir messageflowtransformer tanımlamak shouln't ve aktör düzeyinde yine dizeleri almak ve JsValues ​​dönebilirsiniz:

+0

Merhaba, bunun için bir çözüm buldunuz mu? – SergiGP

+0

Ne yazık ki, ben 'WebSocket.accept [String, String]' –

+0

kullanarak benim cevap bir göz atın, kirli ama belki sizin için çalışabilir :) – SergiGP

cevap

1

Bir workarround

Benim denetleyicisi buldum.