如何在将结果返回给客户端后执行代码? 例如:
return ok("first");
之后我需要向我的websocket演员发送回复
myActor.tell("second",null)
主要目标 - 发送回复后我需要向套接字发送消息
答案 0 :(得分:1)
您无法直接执行此操作,因为return
语句会结束操作。
如果模板的渲染问题太长,您可以先渲染它,然后发送消息,最后发送预渲染的结果,如
Result res = ok("first");
myActor.tell("second",null);
return res;
如果它仍然不能满足你,你可以使用Akka调度程序安排消息,让我们说1秒延迟。 (查看Akka的文件了解详情)
最后,您可以在当前结果中立即发送内容和消息,即将其包装在JSON对象中,或者将消息添加为响应标头 - 当然,如果您在客户端使用JS处理它。 / p>
答案 1 :(得分:1)
在Java中,动作组合类可能是这样的:
public class WebSocketAction extends play.mvc.Action.Simple {
public F.Promise<Result> call(Http.Context ctx) throws Throwable {
Promise<SimpleResult> call = delegate.call(ctx);
// Do your websocket stuff here
return call;
}
}
然后使用@With(WebSocketAction.class)
注释您的操作方法。