gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:51:56 27 4
gpt4 key购买 nike

处理Websockets,我拿了netty's client和我使用 Scala (2.10.2) 用 Play Framework (2.2.1) 构建的服务器(代码粘贴在下面)。 服务器不对客户端的 Ping 消息使用react。 既不让 Iteratee 注意到任何传入的 Ping 消息,框架本身也不响应 Ping 消息。

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

任何人都可以解释这种行为并提示我如何处理 Play Framework 中的 Websocket Ping/Pong 帧?

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 中修复

https://github.com/playframework/playframework/pull/2130

关于scala - Play Framework Websocket 服务器不处理来自 netty 客户端的 Ping 帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20659446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com