Мне нужно сообщить всем пользователям о добавлении новых Запись в базу данных. Итак, у меня есть следующий кодWebsockets, Play Framework и Actor
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()); } }
И последнее, как мне кажется, мне нужно, чтобы вызвать актера из моего контроллера Ответа
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
, и где я могу получить его в мой контроллер? Не могли бы вы прояснить логику отправки обновлений всем клиентам через веб-сокеты?