2016-12-08 4 views
0

私はwebsocketルートが必要なシナリオを持っており、ルートパスを同じにすることができます。 Akka Httpで可能ですか? WebSocketクライアントを介して、私はws://localhost:8080/helloにアクセスし、場合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のエラーを取得: 下記のコードを考えてみましょう。しかし、通常のカール要求はSimple helloの結果を返します。何とか同じルートで両方のアクションを達成することは可能ですか?以下の線に沿って

答えて

1

何かがそれが働いた

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

を行う必要があります。ありがとう:) –

関連する問題