Calling a method in play WebSocket in Scala

2019-03-06 15:50发布

问题:

I am new to scala, Play framework and Akka. I have function defined as

def socket = WebSocket.accept[String, String] { request =>
    ActorFlow.actorRef(out => MyWebSocketActor.props(out))
  }

This i want to call from other class .I am not clear how to call this function as, i can't call this by

objectName.socket(implict req:RequestHeader)

I am working in Play 2.5.3 , Scala 2.11.7 and Akka 2.4.7 .

Edit: it gives me error : '=>' expected, ')' found

回答1:

I'm still not sure, what the benefit of that would be, but I'll try to answer your question.

First of all, this (objectName.socket(implict req:RequestHeader)) ist not how you call a method with an implicit parameter (also you have a typo there in implicit).

But as you already pointed out correctly, you need an implicit RequestHeader, so you only can call this method within the context of a Controller.

def anotherControllerAction = objectName.socket

That would basically just point anotherControllerAction to the socket implementation. Then you still need to put anotherControllerAction into your routes file.

You might want to describe in more detail, what you actually want to achieve