Playframework 播放框架和akka到实时套接字更新

Playframework 播放框架和akka到实时套接字更新,playframework,websocket,akka,playframework-2.3,Playframework,Websocket,Akka,Playframework 2.3,我是新加入游戏框架的,我已经创建了一个应用程序来轻松管理帖子和评论。现在,作为概念证明,我想实现一个websocket,在页面中推送实时评论(添加、更新和删除) 我的想法是在我的控制器的rest操作中发送一条更新消息,但是,我不知道什么是最好的方法(akka?) 编辑。 目前,我会选择Akka,但我不知道如何建立一个基本的POC 我已使用以下内容更改了Application.java: package controllers; import play.*; import play.mvc.*;

我是新加入游戏框架的,我已经创建了一个应用程序来轻松管理帖子和评论。现在,作为概念证明,我想实现一个websocket,在页面中推送实时评论(添加、更新和删除)

我的想法是在我的控制器的rest操作中发送一条更新消息,但是,我不知道什么是最好的方法(akka?)

编辑。 目前,我会选择Akka,但我不知道如何建立一个基本的POC

我已使用以下内容更改了Application.java:

package controllers;

import play.*;
import play.mvc.*;

import views.html.*;
import java.util.*;

import akka.MyWebSocketActor;
import play.libs.F.*;
import play.mvc.WebSocket;

public class Application extends Controller {

    public static Result index() {
        return ok(index.render("Your new application is ready."));
    }

    // ///////////////////////////////////////////////////////////////////////////
    //
    // Socket and Actors definition 
    //
    // ///////////////////////////////////////////////////////////////////////////
    public static WebSocket<String> socket() {
        return WebSocket.withActor(MyWebSocketActor::props);
    }
    // ///////////////////////////////////////////////////////////////////////////
    //
    // Socket and Actors definition 
    //
    // ///////////////////////////////////////////////////////////////////////////

}
不幸的是,我有一个编译错误:

! @6ipf58l8c - Internal server error, for (GET) [/] ->

play.PlayExceptions$CompilationException: Compilation error[error: cannot find symbol]
    at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
    at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.3.jar:na]
    at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:304) ~[na:na]
    at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:298) ~[na:na]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.3.jar:na]
    at play.PlayReloader$$anon$1$$anonfun$reload$2.apply(PlayReloader.scala:298) ~[na:na]
    at play.PlayReloader$$anon$1$$anonfun$reload$2.apply(PlayReloader.scala:296) ~[na:na]
    at scala.util.Either$LeftProjection.map(Either.scala:377) ~[scala-library-2.10.3.jar:na]
    at play.PlayReloader$$anon$1.reload(PlayReloader.scala:296) ~[na:na]
    at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:104) ~[play_2.10-2.2.3.jar:2.2.3]
    at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:102) ~[play_2.10-2.2.3.jar:2.2.3]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library-2.10.3.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library-2.10.3.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361) ~[scala-library-2.10.3.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) ~[scala-library-2.10.3.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) ~[scala-library-2.10.3.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) ~[scala-library-2.10.3.jar:na]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) ~[scala-library-2.10.3.jar:na]
这似乎与:

    return WebSocket.withActor(MyWebSocketActor::props);
                    ^
在Application.java文件中。
我缺少什么?

是的,您可以使用akka演员弹劾websocket进行实时更新

除此之外,typesafe还提供了一个聊天模板。您可以从中获得想法:

    return WebSocket.withActor(MyWebSocketActor::props);
                    ^