我在使用 akka http websocket 连接时遇到问题。我使用 handleMessagesWithSinkSource(sinkUsesActor , SFPTextMessage ) 处理 websocket 消息。sinkUsesActor 使用一个演员,而 SFPTextMessage 是来自 actorpublisher 的来源。当我刷新浏览器并尝试重新建立连接时,错误提示:
java.lang.IllegalStateException: can not subscribe the same subscriber multiple times .
在这种情况下,如何使用来自 actorpublisher (SFPTextMessage) 的相同源?
def wsHandler: HttpRequest ⇒ HttpResponse = {
case req: HttpRequest ⇒ req.header[UpgradeToWebsocket] match {
case Some(upgrade) ⇒
upgrade.handleMessagesWithSinkSource(sinkUsesActor , SFPTextMessage )
case None ⇒ HttpResponse(400, entity = "Missing Upgrade header")
}
}