Scala akka http websocket客户端无法使用ripple websocket
我是阿卡http的新手。Im使用最新的稳定请求版本2.4.7。 我正在尝试连接到websocket,我能够做到。问题是当我使用它时使用“wss://s1.ripple.com“握手后,连接关闭Scala akka http websocket客户端无法使用ripple websocket,scala,akka-http,Scala,Akka Http,我是阿卡http的新手。Im使用最新的稳定请求版本2.4.7。 我正在尝试连接到websocket,我能够做到。问题是当我使用它时使用“wss://s1.ripple.com“握手后,连接关闭 val incoming: Sink[Message, Future[Done]] = Sink.foreach[Message] { case message: TextMessage.Strict => println(message.text) case mes
val incoming: Sink[Message, Future[Done]] =
Sink.foreach[Message] {
case message: TextMessage.Strict =>
println(message.text)
case message:TextMessage.Streamed =>
println(message)
case message => println
}
val outgoing = Source.single(TextMessage("""{"command" : "fee"}"""))
val webSocketFlow = Http().webSocketClientFlow(WebSocketRequest("wss://echo.websocket.org"))
val (upgradeResponse, closed) = outgoing
.viaMat(webSocketFlow)(Keep.right)
.toMat(incoming)(Keep.both)
.run()
val connected = upgradeResponse.flatMap { upgrade =>
if (upgrade.response.status == StatusCodes.OK || upgrade.response.status == StatusCodes.SwitchingProtocols) {
Future.successful(Done)
} else {
throw new RuntimeException(s"Connection failed: ${upgrade.response.status}")
}
}
connected.onComplete(r => println(s"camote ${r} ${upgradeResponse}"))
closed.foreach(_ => println("closed"))
/==================================================================更新===
我现在可以从服务器获取消息。似乎是添加了Source.empty完成了这个任务。但现在的问题是,我无法断开与服务器的连接。。。Source.empty使连接保持活动状态,直到超时。我可以手动关闭从客户端到服务器的连接吗
val source=Source.single(TextMessage.Strict(<JsStringMessage>)).concatMat(Source.maybe)(Keep.left)
val source =
Http().webSocketClientFlow(WebSocketRequest("<wss url>"))
val (done,data)= handshaker
.viaMat(webSocketFlow)(Keep.right)
.toMat(Sink.last)(Keep.both)
.run()
val resuldata:Future[String] = data.map{
case message:TextMessage.Strict => message.text
case message =>"""{"status" : "failed"}"""
}
resuldata
val source=source.single(TextMessage.Strict()).concatMat(source.maybe)(Keep.left)
val源=
Http().webSocketClientFlow(WebSocketRequest(“”)
val(完成,数据)=握手器
.维亚马特(webSocketFlow)(靠右)
.toMat(最后一个下沉)(两个都保持)
.run()
val resultdata:Future[String]=data.map{
案例消息:TextMessage.Strict=>message.text
案例消息=>“”“{”状态“:“失败”}”
}
结果数据