我已经使用 Play Framework 实现了一个 Web 套接字服务器。服务器可以连接并响应客户端。如果连接空闲一段时间,则服务器会自动关闭连接。我不确定是否有任何配置可以使连接始终处于活动状态。因此,为了监控连接状态(连接是否处于活动状态),服务器需要以特定的时间间隔向客户端发送 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"
}
}
那么如何以特定的时间间隔从服务器向客户端发送 web socket ping 消息呢?