Простой способ - создать actorRef и исходный код с помощью Publisher. Основываясь на вашем коде, я обновил код. Это будет работать.
//val actorRef: ActorRef[Protocol] = actorSource
//.to(Sink.foreach(println))
//.run()
val (actorRef, publisher) =
Source.actorRef[Protocol](16, OverflowStrategy.fail)
.map(msg => TextMessage.Strict(msg.toString))
.toMat(Sink.asPublisher(false))(Keep.both).run()
path("ws-push-actor")
//complete(upgrade.handleMessagesWithSinkSource(Sink.ignore, actorSource))
complete(upgrade.handleMessagesWithSinkSource(Sink.ignore, Source.fromPublisher(publisher)))