Scala Play Framework Websocket服务器不处理来自netty客户端的Ping帧

Scala Play Framework Websocket服务器不处理来自netty客户端的Ping帧,scala,playframework,websocket,netty,Scala,Playframework,Websocket,Netty,在处理WebSocket时,我使用Scala(2.10.2)和Play Framework(2.2.1)构建了一个服务器(代码粘贴在下面)服务器不会对客户端的Ping消息做出反应。不会让迭代者注意到任何传入的Ping消息,框架本身也不会响应Ping消息 但是,我的应用程序处理传入的二进制帧。这对我来说很奇怪,因为二进制帧与Ping帧非常相似。我知道的唯一区别是操作码,即0x9表示Ping,0x2表示Binay 有谁能解释一下这种行为,并告诉我如何在Play Framework中处理Websock

在处理WebSocket时,我使用Scala(2.10.2)和Play Framework(2.2.1)构建了一个服务器(代码粘贴在下面)服务器不会对客户端的Ping消息做出反应。不会让迭代者注意到任何传入的Ping消息,框架本身也不会响应Ping消息

但是,我的应用程序处理传入的二进制帧。这对我来说很奇怪,因为二进制帧与Ping帧非常相似。我知道的唯一区别是操作码,即0x9表示Ping,0x2表示Binay

有谁能解释一下这种行为,并告诉我如何在Play Framework中处理Websocket乒乓球/乒乓球帧吗?

def connect = WebSocket.using[Array[Byte]] { request =>
   // connection attempts are also indicated if client sends 'PingWebSocketFrame'
   Logger.info("Someone just connected!?")

   val (out, channel) = Concurrent.broadcast[Array[Byte]]

   // Messages of netty's type 'PingWebSocketFrame' never enter here
   val in = Iteratee.foreach[Array[Byte]] { msg =>
      // the following line is printed if netty's 'BinaryWebSocketFrame' was sent BUT
      //                         never if netty's 'PingWebSocketFrame'   was sent, why?
      println("Some Binary data arrived, being of length " + msg.length + " [bytes]")
   }
(in, out)
}

Playframework不支持pingframe。它只是忽略了它。现在在master中已修复


我发现了关于Websocket ping框架的进一步讨论