Я реализовал сервер веб-сокетов, используя Play Framework. Сервер может принимать соединения и отвечать клиентам.
Если соединения простаивают в течение некоторого времени, сервер автоматически закрывает соединение.
Я не уверен, есть ли какая-либо конфигурация, чтобы сделать соединения всегда живыми.
Таким образом, чтобы отслеживать состояние соединения (соединение активно или нет), сервер должен отправить клиенту сообщение PING в определенное время.
интервалы и он должен получить PONG от клиента.
Ниже приведена реализация моего сервера
@Singleton
class RequestController @Inject()(cc: ControllerComponents)(implicit system: ActorSystem, mat: Materializer) extends AbstractController(cc) {
def ws = WebSocket.accept[String, String] {req =>
ActorFlow.actorRef { out =>
ParentActor.props(out)
}
}
}
object ParentActor {
def props(out: ActorRef) = Props(new ParentActor(out))
}
class ParentActor(out : ActorRef) extends Actor {
override def receive: Receive = {
case msg: String => out ! s"Echo from server $msg"
}
}
Итак, как отправить пинг-сообщение веб-сокета с сервера клиенту через определенные промежутки времени?