Я думаю, что я хотел бы использовать Play's и Akka in: Sink
и out: Source
для WebSocket (вместо создания актера). Я до сих пор не могу понять, как это сделать.
Как я могу отправлять сообщения в «исходящий» источник? Как мне закрыть входы и выходы? Как мне узнать, закрыл ли клиент соединение?
Я посмотрел Nodejs Документы WebSocket: https://github.com/websockets/ws#echowebsocketorg -demo :
- Там есть:
ws.send('hello client');
- могу ли я как-нибудь использовать Play's out
так же? - Там:
ws.on('message' ...
- я могу использовать Sink.foreach()
для этого, верно - И
ws.on('close' ...
- какое-нибудь событие закрытия 'Sink / Source' каким-либо образом? - и
ws.close();
- как мне сделать это с in Out Sink Source ?
Или следует Я использую что-то еще, кроме in: Sink
и out: Source
? Я бы предпочел не создавать актера (или у меня тоже есть вопросы по этому поводу - это будет другая топи c).
***
Вот пример в Документация к пьесе :
// Log events to the console
val in = akka.stream.scaladsl.Sink.foreach[String](println)
// Send a single 'Hello!' message and then leave the socket open
val out = akka.stream.scaladsl.Source.single("Hello!")
.concat(akka.stream.scaladsl.Source.maybe)
Но это заставляет меня задуматься, как закрыть источник 'in' Sink and 'out' (через некоторое время, а не сразу)
и как мне это сделать знать, когда клиент их закрывает. И как отправлять полезные сообщения «out»: глядя на Исходные документы , я не могу найти ничего, что можно было бы использовать для отправки различных сообщений позже , на «out» , Может быть, метод ask
? "Используйте шаблон запроса, чтобы отправить сообщение-запрос-ответ целевому действующему субъекту" - мне неясно, что это значит.