Akka HTTP WebSocket客户端等效于此node.js
我有一些用户文档说明了如何将websocket与此节点片段一起使用:Akka HTTP WebSocket客户端等效于此node.js,websocket,akka-http,Websocket,Akka Http,我有一些用户文档说明了如何将websocket与此节点片段一起使用: var socket = io(“HOST:PORT”); socket.on('request-server', function() { socket.emit('server-type', 'red') }); Akka HTTP中的等效客户端代码是什么 我从Akka文档中的示例中得出以下内容。这不是我想写的,因为 我想在发送任何事件之前,我需要连接并等待请求服务器事件&我不知道怎么做 我不知道如何将源中的文本消
var socket = io(“HOST:PORT”);
socket.on('request-server', function() {
socket.emit('server-type', 'red')
});
Akka HTTP中的等效客户端代码是什么
我从Akka文档中的示例中得出以下内容。这不是我想写的,因为
- 我想在发送任何事件之前,我需要连接并等待
事件&我不知道怎么做请求服务器
- 我不知道如何将
中的源
格式化为等同于“socket.emit”('server-type','red')文本消息
Akka客户端与给定的socket.io代码等价吗?发送消息“outgoing”后,您的连接立即关闭 在这里查看半封闭WebSocket
implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
import system.dispatcher
val incoming: Sink[Message, Future[Done]] = Sink.foreach[Message] {
case message: TextMessage.Strict => println(message.text)
case z => println(z)
}
val outgoing = Source(List(TextMessage("'server-type': 'red'")))
val webSocketFlow = Http().webSocketClientFlow(
WebSocketRequest("ws://localhost:3000/socket.io"))
val (upgradeResponse, closed) =
outgoing
.viaMat(webSocketFlow)(Keep.right)
.toMat(incoming)(Keep.both)
.run()
val connected = upgradeResponse.flatMap { upgrade =>
if (upgrade.response.status == StatusCodes.SwitchingProtocols) {
Future.successful(Done)
} else {
throw new RuntimeException(s"Connection failed: ${upgrade.response.status}")
}
}
connected.onComplete(println)
closed.foreach(_ => println("closed"))