При работе с WebSockets напрямую через Akka Streams я не нашел правильного способа узнать, когда клиент отключается (обычно, из-за сбоя или тайм-аута). Я использую базовый пример, подобный приведенному в официальной документации:
import play.api.mvc._
import akka.stream.scaladsl._
def socket = WebSocket.accept[String, String] { request =>
// Log events to the console
val in = Sink.foreach[String](println)
// Send a single 'Hello!' message and then leave the socket open
val out = Source.single("Hello!").concat(Source.maybe)
Flow.fromSinkAndSource(in, out)
}
Мне нужно знать, когда клиент больше не подключен.