actorからwebsocketのbroadcastをするには

投稿者: Anonymous playでactorから接続しているクライアントにbroadcastするにはどうしたらよいですか? playでwebsocketを使うときの参考になるサイトがあったらぜひ教えて下さい。 //Global.scala object Global extends GlobalSettings { override def onStart(app: Application) { val system = ActorSystem(“system”) val hello = system.actorOf(Props[HelloActor], “HelloActor”) hello ! “world” } } //HelloActor.scala class HelloActor extends Actor { def receive = { case “world” => helloWorld } def helloWorld = { val (out, channel) = Concurrent.broadcast[String] channel.push(“HelloWorld!!”) }…(Continue Reading)

【Playframework2.5】JavaAkkaのschedulerが利用できない

投稿者: Anonymous 以下の環境でJavaAkkaを利用した定期処理を実装したいのですが、コンパイルエラーがとれない状況です。 解決法をご存知の方がいらっしゃいましたら手助けしていただけないでしょうか。 ・IDE:eclipse Neon.1a Release (4.6.1) ・java:jdk1.8.0_91 ・コンパイラ:java 1.8 ・フレームワーク:playframework 2.5 package services; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import javax.inject.Singleton; import akka.actor.ActorSystem; import play.Logger; import play.inject.ApplicationLifecycle; @Singleton public class MyApplicationGlobal { @Inject public MyApplicationGlobal(final ActorSystem system, ApplicationLifecycle lifecycle) { // サーバ起動時の動作 Logger.info(“———————————– Start application… ——————————“); system.scheduler().schedule( Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay 0 milliseconds…(Continue Reading)

【Playframework2.5】Server-Sent Eventsを使用して、イベント駆動な画面同期を行いたい

投稿者: Anonymous Webシステムにおいて、同じ画面を複数ユーザーが表示・操作している状態で画面を同期化したいと考えています。 ○期待している動作 ユーザが画面を操作>AjaxでDBを更新>更新内容を、同じ画面を開いている別ユーザの画面にも反映 ○現状 play.libs.EventSourceのリファレンスに乗っているサンプルコードを実装し、一定時間ごとにサーバからクライアントへデータを送信できることを確認しました。 ・javascript $(function() { /************************************************************************** * * 同期処理用SSE * **************************************************************************/ var eventSource = new EventSource(“/xxx/sse/test”); eventSource.onmessage = function (event) { alert(event.data); }; }); ・サーバ側 public Result testSSE() { Source<String, ?> tickSource = Source.tick(Duration.Zero(), Duration.create(10000, TimeUnit.MILLISECONDS), “TICK”); Source<EventSource.Event, ?> eventSource = tickSource.map((tick) -> EventSource.Event.event(df.format(ZonedDateTime.now()))); return ok().chunked(eventSource.via(EventSource.flow())).as(Http.MimeTypes.EVENT_STREAM); } ○疑問 このサンプルを参考に、「一定時間ごと」ではなく「DB更新処理が完了する毎」にフラグを変更したいのですが、方法がわからずに頓挫している状態です。 ご存知の方がいらっしゃいましたらご協力をお願いします・・・。…(Continue Reading)