Playframework подталкивает к Websocket - PullRequest
0 голосов
/ 29 апреля 2018

Я прочитал документацию по WebSocket в Play Framework, но не нашел решения своей проблемы.

Описание проблемы

У меня есть API (Play Framework), который получает данные от Клиента 1 (C1) через событие POST. У меня есть другой клиент, который должен автоматически обновляться, если он прослушивает (читай: есть открытый WebSocket для API). Как я могу вставить полученные данные в Websocket?

Документация Play Framework показывает только, как реагирует на полученное сообщение через Websocket, но не как отправлять данные с сервера.

Ожидания решения

Не могли бы вы привести простой пример такого поведения? Может быть, мы сможем включить его в документацию Play Framework. У меня нет большого опыта с Аккой.

Дополнительная информация

В Play Framework есть два способа работы с веб-сокетами. Один с актерами, а другой напрямую с Akka Streams. Я думаю, что Akka Streams могла бы быть более прямой в этом случае, но я могу жить обоими способами (или, возможно, третьим?).

Если вам нужна дополнительная информация, просто прокомментируйте ниже!

1 Ответ

0 голосов
/ 02 мая 2018

Вы должны подключить своих клиентов так:

Во-первых, в файле маршрутов:

GET     /connectWebSocket           @myPackage.myController.webSocket

Тогда ваш контроллер:

def webSocket: WebSocket = WebSocket.accept[String, String] { _ =>
  ActorFlow.actorRef(ActorReceivingMessagesFromPost.props())
}

После этого вы создаете актера, который получает сообщения от постов с таким получением:

class ActorReceivingMessagesFromPost(out: ActorRef) extends Actor {
  override def receive: Receive = {
    case msg: String => out ! msg
  }
}

Дайте мне знать, если вам нужна дополнительная информация

...