【发布时间】:2016-03-03 07:10:04
【问题描述】:
我需要通知所有用户向数据库添加新的记录。 所以,我有以下代码
-
Application.java - 这里我放置了套接字处理方法
public WebSocket<JsonNode> sockHandler() { return WebSocket.withActor(ResponseActor::props); } -
然后我打开了连接
$(function() { var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket var socket = new WS("@routes.Application.sockHandler().webSocketURL(request)") socket.onmessage = function(event) { console.log(event); console.log(event.data); console.log(event.responseJSON) }}); -
我的 Actor 类
public class ResponseActor extends UntypedActor { private final ActorRef out; public ResponseActor(ActorRef out) { this.out = out; } public static Props props(ActorRef out) { return Props.create(ResponseActor.class, out); } @Override public void onReceive(Object response) throws Exception { out.tell(Json.toJson(response), self()); } } -
最后,我认为,我需要从我的响应控制器调用 Actor
public Result addPost() { Map<String, String[]> request = request().body().asFormUrlEncoded(); Response response = new Response(request); Map<String, String> validationMap = ResponseValidator.validate(response.responses); if (validationMap.isEmpty()) { ResponseDAO.create(response); ActorRef responseActorRef = Akka.system().actorOf(ResponseActor.props(outRef)); responseActorRef.tell(response, ActorRef.noSender()); return ok(); } else { return badRequest(Json.toJson(validationMap)); } }
我的问题是:ActorRef 输出是什么,我在控制器中的哪里可以得到它?
您能否阐明通过 Web 套接字向所有客户端发送更新的逻辑?
【问题讨论】:
标签: java ajax playframework websocket actor