我遇到了akka http websocket连接的问题。我使用handleMessagesWithSinkSource(sinkUsesActor,SFPTextMessage)处理websocket消息。 sinkUsesActor使用actor,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")
}
}