Websocket 和普通 get 路由在 Akka Http 中可以相同吗?

Can Websocket and normal get route be same in Akka Http?

我确实有一个场景,我希望我的 websocket 路由和获取路由路径相同。在 Akka Http 中有可能吗? 考虑下面提到的代码:

def flow: Flow[Message, Message, Any] =
      Flow.fromSinkAndSource(Sink.ignore,     
         Source.single(TextMessage.Strict("Hello from websocket")))

val route =
  path("hello") {
    get {
      complete(HttpEntity(ContentTypes.`application/json`,"Simple hello"))
    }
  } ~ path("hello") {
    handleWebSocketMessages(flow)
  }

如果我通过 websocket 客户端访问 ws://localhost:8080/hello,我会收到 websocket 错误。但是正常的 curl 请求会给出 Simple hello 的结果。是否有可能以某种方式在同一条路线上实现这两个动作。

按照下面的内容应该做的事情

val route = path("hello") {
  optionalHeaderValueByType[UpgradeToWebSocket](()) {
    case Some(upgrade) => complete(upgrade.handleMessages(flow))
    case None => get {
      complete("Simple hello")
    }
  }
}